Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Мьютексы в потоке [D7, WinXP]


Страницы:   1 2 3

Sam Stone ©   (2006-06-28 22:25:00) 

Доброго времени суток.
Как создать мьютекс в потоке (TThread) так, чтобы потом в основном потоке программы можно было проверить создан он или нет? Просто CreateMutex с тем же именем ни к чему не приводит :(


Fay   (2006-06-28 22:57:00) [41]

2 Sam Stone ©   (28.06.06 22:37) [2]
function Jopa(Parameter : Pointer) : Integer;
begin
 CreateMutex(nil, True, 'JOPA');
end;

procedure TForm1.Button1Click(Sender : TObject);
var
 dw : DWORD;
begin
 CloseHandle(BeginThread(nil, 0, Jopa, nil, 0, dw));

 Sleep(100);
 CreateMutex(nil, True, 'JOPA');
 RaiseLastOSError;
end;


Leonid Troyanovsky   (2006-06-28 22:50:00) [42]


> Sam Stone ©   (28.06.06 22:25)  

> Как создать мьютекс в потоке (TThread) так, чтобы потом
> в основном потоке программы можно было проверить создан
> он или нет?


Попробую описать решение проблемы так, как она обычно
встречается в жизни. Т.е., основной поток создает мьютекс
и передает его хендл вторичному. В этом случае, у вторичного
потока нет нужды сомневаться в валидности оного.
Ну, а если нужда возникла, то у него есть еще в запасе
DuplicateHandle.

С другой стороны, что-то мне подсказывает, что на месте
мьютекса мог быть и Event (CreateEvent).

--
Regards, LVT.


Sam Stone   (2006-06-28 22:37:00) [43]

Если повторно создать мьютекс с тем же именем GetLastError вернет ошибку ERROR_ALREADY_EXISTS. Этого не происходит.


Fay   (2006-06-28 22:26:00) [44]

> Просто CreateMutex с тем же именем ни к чему не приводит :(
В смысле? К чему не приводит?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо