If a cval already has a callback and a new one is added, a deadlock can occur if the cval is changed in another thread:
static ChangeableValue<int> cval = new (1);
static void TestAddCallback()
{
var running = true;
cval.AddCallback(_ => { });
new Thread(new ThreadStart(() =>
{
while(running)
{
using (Adaptive.Transact)
{
Thread.Yield();
cval.Value = cval.Value + 1;
}
}
})).Start();
for (int i = 0; i < 1000000; i++)
{
var dispose = cval.AddCallback(v => Console.WriteLine("FOOO: {0}", v));
Thread.Yield();
dispose.Dispose();
}
running = true;
Console.WriteLine("EXIT");
}
Is there a way to prevent this?
If a cval already has a callback and a new one is added, a deadlock can occur if the cval is changed in another thread:
Is there a way to prevent this?