Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.01 c
6-93603
Exceed
2003-11-25 00:25
2004.01.29
WebBrowser и прокси


14-93631
Zeon
2004-01-08 01:01
2004.01.29
Алгоритм сортировки


3-93401
Владий
2003-12-29 18:08
2004.01.29
Помогите с форматом запроса


14-93699
Amigo Sv
2004-01-08 09:29
2004.01.29
Поиск записи в таблице


1-93435
IronHawk
2004-01-16 15:13
2004.01.29
Приветствую Мастеров! Как сделать проверку, что в строке ДАТА?




   Наверх