Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
| Archon |
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: 24 |
Сел переписывать движок Doomed Game под потоки и... понял, что мои знания о потокобезопасности оставляют желать лучшего. Может быть кто-нибудь (volvo?) проведет несколько лекций на эту тему? Думаю, это не только меня может заинтересовать. Или может я просто задам свои вопросы?
-------------------- Close the World...txeN eht nepO
|
![]() ![]() |
| volvo |
Сообщение
#2
|
|
Гость |
Цитата Разве что в TMultiReadExclusiveWriteSynchronizer используется Mutex, а не CriticalSection. Кто сказал?Цитата(rtl.pdf 37.53.3) Description: Create creates a new instance of TMultiReadExclusiveWriteSynchronizer. It initializes Насчет строчек "потока №13" - хм... Из 5409 строк лога этот поток завершает запись в 5289 строке. Это не конец лога совсем... Ты файлы не перепутал?a TRTLCriticalSection. Добавлено через 5 мин. Или ты о том, что время НЕпоследовательное, а вперемешку? Так это подразумевается вообще-то при использовании критических секций, порядком входа в секцию управлять нельзя. Вот что Рихтер говорит в частности про LeaveCriticalSection: Цитата Эта функция просматривает элементы структуры CRITICAL_SECTION и уменьшает счетчик числа захватов ресурса вызывающим потоком на 1. Если его значение больше 0, LeaveCriticalSection ничего не делает и просто возвращает управление. Если значение счетчика достигло 0, LeaveCriticalSection сначала выясняет, есть ли в системе другие потоки, ждущие данный ресурс в вызове EnterCriticalSection. Если есть хотя бы один такой поток, функция настраивает значения элементов структуры, что бы они сигнализировали о занятости ресурса, и отдает его одному из ждущих потоков (поток выбирается "по справедливости"). Если же ресурс никому не нужен, LeaveCriticalSection соответственно сбрасывает элементы структуры. |
Archon Потоки... Потоки? Потоки! 28.06.2009 1:13
volvo Название темы - :good:
Нет, пока лекций на тему… 28.06.2009 1:20
Archon Окей. Тогда рассмотрим пример. Мое приложение сост… 28.06.2009 1:49
volvo Какие методы планируется вызывать из разных потоко… 28.06.2009 2:16
Archon В общем случае не все. Но кто его знает, как потом… 28.06.2009 2:29
volvo Вот !!! Все, что нужно, ты уже сказал.… 28.06.2009 2:37
Archon А неделимость чтения кто гарантировать будет? Вдру… 28.06.2009 2:45
volvo Тогда, естественно, придется пользоваться другими … 28.06.2009 3:25
Archon Я не знаю процедур :). Можно, конечно, WinApi, но … 28.06.2009 3:39
Archon Кстати да, CriticalSection тут будет проще :).unit… 28.06.2009 10:20
Archon Обезопасил модуль u_log.pas. Теперь думаю над u_wi… 28.06.2009 12:36
volvo А чего его проверять, вроде выглядит нормально, на… 28.06.2009 12:57
Archon А какие существуют методы тестирования на потокобе… 28.06.2009 13:03
Archon Продолжаю исправлять классы. Работу с текстурами я… 28.06.2009 13:43
volvo Что-то не так... Смотри:
uses sysutils, classes,
… 28.06.2009 14:06
Archon Странно, я у себя в том же тесте таких ужасов не н… 28.06.2009 14:54
volvo Угу, тут прямо шалит, а если сделать:
unit u_test;… 28.06.2009 15:29
Archon А в чем разница? Разве что в TMultiReadExclusiveWr… 28.06.2009 15:44
Archon Цитата из того же файла версии 2.1 за август 2006.… 28.06.2009 16:47
volvo Так... Меняем стратегию...
Модуль:
Тестовая прогр… 28.06.2009 17:27
Archon Долго не отвечал, потому что устраивался на летнюю… 2.07.2009 22:12
volvo Кури этот код, это рекомендация Рихтера, а он плох… 3.07.2009 0:20![]() ![]() |
|
Текстовая версия | 6.11.2025 0:19 |