Привет, я пытаюсь написать список без блокировки. Я получил добавочную часть, работающую, как он думает, но код, который извлекает объекты из списка, не работает на пользу: (
Ну, список не является обычным списком .. У меня есть интерфейс IWorkItem
interface IWorkItem
{
DateTime ExecuteTime { get; }
bool Cancelled { get; }
void Execute(DateTime now);
}
и у меня есть список, куда я могу добавить это: P, и идеар - это когда я запускаю Get (); в списке он должен зацикливаться до тех пор, пока не найдет IWorkItem, который
If (item.ExecuteTime < DateTime.Now)
, удалите его из списка и верните.
я выполнил тесты со многими потоками на моем двухъядерном процессоре, и кажется, что Add works до сих пор не удавалось, но функция Get теряет некоторые рабочие элементы, некоторые из которых у меня нет ни малейшего представления о том, что не так .....
ps, если я получу эту работу, любой может свободно использовать код :) ну, вы в любом случае, но я не вижу смысла, когда он прослушивается: P
Код здесь http://www.easy -share.com / 1903474734 / LinkedList.zip и если вы попытаетесь запустить его, вы увидите, что иногда он не сможет получить столько рабочих элементов, сколько это внесло в список ...
Редактировать: у меня есть список без блокировки, работающий быстрее, чем с использованием блокировки (obj), но у меня есть объект блокировки, который использует Interlocked, который все еще превосходит список без блокировки, я собираюсь попытаться создать массив без блокировки и SE, если я получу те же результаты там, когда я закончил плохо загрузить результат здесь ..