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