Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Синхронизация, семафор, мьютекс   Найти похожие ветки 

 
lexx777 ©   (2003-11-21 23:23) [0]

Мне нужно выполнить следуюющее:
Есть 2 приложения.
Каждое приложение выполняет отчет до пяти, а затем ждет, пока и другое приложение сосчитает до пяти. Процесс повторяется снова и снова.

С помощью мьютекса синхронизация работает, а с семафором нет.

Вот код
...

var
Form1: TForm1;
hSemaphore : THandle;
f1: boolean;
zAppName: array[0..512] of char;
...

procedure TForm1.ButtonCreateSem2Click(Sender: TObject);
begin
StrPCopy(zAppName, "TestS");
hSemaphore:=CreateSemaphore(nil,1, 1, zAppName);

if hSemaphore = 0 then
begin
ShowMessage(SysErrorMessage(GetLastError));
exit
end;
Edit1.Text:= IntToStr(hSemaphore);
end;

procedure TForm1.ButtonStartShet2Click(Sender: TObject);
var z: byte;

begin
z:=0;
f1:= false;
While (not f1) do
begin

Memo1.Clear;
inc(z);
Memo1.Lines.Add(IntToStr(z));
Edit1.Text:= IntToStr(z);
Application.ProcessMessages;
Sleep(1000);

If (z Mod 5) = 0 then
begin
ReleaseSemaphore(hSemaphore, 1 , nil);
WaitForSingleObject(hsemaphore, INFINITE);

end;
End;
ReleaseSemaphore(hSemaphore, 1 , nil);
end;

procedure TForm1.ButtonStopSchet2Click(Sender: TObject);
begin
f1:=true;
end;

У обоих приложений код идентичен. Что я делаю не так?


 
Nero Wolfe   (2003-11-21 23:41) [1]

Попробуй Linux поизучать... Что такое Pipe, семафоры Дейкстры, сообщения. Может, поможет ;)


 
lexx777 ©   (2003-11-22 00:26) [2]

Советую почитать Э. Таненбаум "Совр. ОС", Дж. Рихтер Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows.
Maxwell? Linux Core Kernel Commentary.


 
Игорь Шевченко ©   (2003-11-22 01:08) [3]

Попробуй

hSemaphore:=CreateSemaphore(nil, 0, 1, zAppName);



Страницы: 1 вся ветка

Текущий архив: 2004.01.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
1-93525
Василий
2004-01-18 12:09
2004.01.29
dll


3-93388
Grihan
2003-12-30 15:06
2004.01.29
InterBase. Ошибка ibtTable.CreateTable;


1-93448
NewZed
2004-01-15 21:34
2004.01.29
Стиль XP


3-93363
Vick
2003-12-31 11:44
2004.01.29
Экспорт из DataSet в Excel


1-93528
RustamBek
2004-01-19 10:36
2004.01.29
Межстрочный интервал в TRichEdit