Сообщение Re[4]: [CodeJam] Code review, план действий по исправлению от 19.04.2016 19:42
Изменено 19.04.2016 20:05 Sinix
Здравствуйте, AndrewVK, Вы писали:
Добавил params в перегрузку AddRange(T[]) + добавил InterlockedOperations.Update() для lock-free обновления поля.
InterlockedOperations теперь поддерживает все типы, что поддерживают методы в interlocked (вытащил в T4 шаблон), тесты добавил.
Такая просьба — посмотри код в InterlockedOperations Вроде всё правильно, но проверить никогда не помешает.
Добавил params в перегрузку AddRange(T[]) + добавил InterlockedOperations.Update() для lock-free обновления поля.
InterlockedOperations теперь поддерживает все типы, что поддерживают методы в interlocked (вытащил в T4 шаблон), тесты добавил.
Такая просьба — посмотри код в InterlockedOperations Вроде всё правильно, но проверить никогда не помешает.
Re[4]: [CodeJam] Code review, план действий по исправлению
Здравствуйте, AndrewVK, Вы писали:
Добавил params в перегрузку AddRange(T[]) + добавил InterlockedOperations.Update() для lock-free обновления поля.
InterlockedOperations теперь поддерживает все типы, что поддерживают методы в interlocked (вытащил в T4 шаблон), тесты добавил.
Такая просьба — посмотри код в InterlockedOperations Вроде всё правильно, но проверить никогда не помешает.
+ есть мысль добавить хелпер для bool-флагов, что-то типа
из MSDN..
Юзинг тут не подходит в принципе, остаётся такой вариант:
Имя метода мне не нравится, есть идея как сделать лучше — велкам!
Добавил params в перегрузку AddRange(T[]) + добавил InterlockedOperations.Update() для lock-free обновления поля.
InterlockedOperations теперь поддерживает все типы, что поддерживают методы в interlocked (вытащил в T4 шаблон), тесты добавил.
Такая просьба — посмотри код в InterlockedOperations Вроде всё правильно, но проверить никогда не помешает.
+ есть мысль добавить хелпер для bool-флагов, что-то типа
//A simple method that denies reentrancy.
static bool UseResource()
{
//0 indicates that the method is not in use.
if(0 == Interlocked.Exchange(ref usingResource, 1))
{
Console.WriteLine("{0} acquired the lock", Thread.CurrentThread.Name);
//Code to access a resource that is not thread safe would go here.
//Simulate some work
Thread.Sleep(500);
Console.WriteLine("{0} exiting lock", Thread.CurrentThread.Name);
//Release the lock
Interlocked.Exchange(ref usingResource, 0);
return true;
}
else
{
Console.WriteLine(" {0} was denied the lock", Thread.CurrentThread.Name);
return false;
}
}
}
из MSDN..
Юзинг тут не подходит в принципе, остаётся такой вариант:
InterlockedOperations.NonReentrant(ref intFlagField, ()=>SomeCode()); // тип флага только int, на всякий уточняю :)
, пойдёт?Имя метода мне не нравится, есть идея как сделать лучше — велкам!