"Dolomite Wave" by
Jim NilsenВчера (суббота?) слышала у метро:
- О, в том доме живёт Маша, которая начальница Саши.
- Что, пойдём устроим пикет? Свободу Саше?
Засела за распоточивание. Судя по тому, что на дворе светло (светало в полпятого) и семь утра, не зря. Добью - поставлю считать. А днём и статью можно дописать.
Опять вожусь с распоточиванием :-) При этом всё довольно просто :-) Берём volatile, берём...
public volatile object[] SyncThreads;
public WaitHandle[] WaitEventArray;
private Thread[] FillThreads;
private SPTM_Fill_Params[] FillParamsLst;
И всё сводится к мелким правкам вроде перестановок объявления из одной области вложенного цикла в другую и проверки инициализации там и сям.
Ой, "Дескриптор SafeHandle был закрыт".
...Находим строчку:
WaitEventArray[iSet].Close(); // will further wait work if array is not full?
И снова спасибо методу предположения об ошибке! Перенесли, и...
Ещё один lock, и...
По-первой 32 мсек меня повергли в шок, и не зря: нашла багу.
Ещё чуть погодя нашла ещё занятную багу: numPairs вроде 1, а через две строчки в режиме отладки она же энцать тысяч надцать. Переводим мышку: оба значения существуют одновременно. О_О Присматриваемся и понимаем, что большое число - это NumPairs. Go to definition: а это число пар в матрице смежности, а не число пар весов. Вот тебе и омонимия =)))
Сняла омонимию, заработало!
Что-то будет дальше...