Re: Многопоточность + синхронизация + как бороться?
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 05.03.06 10:42
Оценка:
Hello HAS, you wrote:

> Вопрос: с точки зрения многопоточности критичная для нас функция OnFinishThread, т.к. ее могут вызвать сразу несколько потоков одновременно, прально? Соотв. делаем, например, так:

>
> void OnFinishThread(Tthread *Thread)
> {
> EnterCriticalSection(&CS);
> try
> {
> if (Locker > 0) throw Exception("Херня, залезло слишком много потоков одновременно ");

Данная проверка бессмысленна, т.к. EnterCriticalSection ГАРАНТИРУЕТ, что данный блок выполняется только одним потоком.
Что не работает?

Кроме того, критическую секцию нужно ставить не на всю функцию, а только на те места где идет обращение в разделяемым ресурсам, т.е. ресурсам к котором возможен доступ из нескольких потоков.

--
Всего хорошего, Слава
ICQ: 197577902
Posted via RSDN NNTP Server 2.0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.