Главная страница
    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.44 MB
Время: 0.008 c
3-93352
mail
2004-01-03 14:42
2004.01.29
Paradox - пробелы в названии полей


7-93709
TCrash
2003-11-12 00:14
2004.01.29
и снова про COM порты


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


3-93334
Miwa
2004-01-04 13:57
2004.01.29
Каким образом можно к одной записи привязать разное количество


3-93331
paul_k
2003-12-30 09:31
2004.01.29
Совсем запутался c uniqueidentifier.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский