Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТВП Конечные и двоичные автоматы.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
144 Кб
Скачать
☆

2.3.3 Фрагмент программы «Main»

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Main.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormMain *FormMain;

STARTUPINFO si1;

STARTUPINFO si2;

PROCESS_INFORMATION piApp1;

PROCESS_INFORMATION piApp2;

HANDLE hMutex;

HANDLE hSemSeat;

HANDLE hSemBench;

HANDLE hEventCustomer;

HANDLE hEventParik;

//---------------------------------------------------------------------------

void Start()

{

char IpszAppName1[] = "C:\\Kursovaya\\Barber\\Debug_Build\\Barber_1.exe";

char IpszAppName2[] = "C:\\Kursovaya\\Hall\\Debug_Build\\Hall_1.exe";

STARTUPINFO si1;

STARTUPINFO si2;

PROCESS_INFORMATION piApp1;

PROCESS_INFORMATION piApp2;

ZeroMemory(&si1, sizeof(STARTUPINFO));

si1.cb = sizeof(STARTUPINFO);

ZeroMemory(&si2, sizeof(STARTUPINFO));

si2.cb = sizeof(STARTUPINFO);

CreateProcess(IpszAppName1, NULL, NULL, NULL, FALSE,

NULL, NULL, NULL, &si1, &piApp1);

CreateProcess(IpszAppName2, NULL, NULL, NULL, FALSE,

NULL, NULL, NULL, &si2, &piApp2);

hMutex = OpenMutex(SYNCHRONIZE, FALSE, "myMutex");

hSemSeat = OpenSemaphore(SEMAPHORE_ALL_ACCESS, FALSE, "Seat");

hSemBench = OpenSemaphore(SEMAPHORE_ALL_ACCESS, FALSE, "Bench");

hEventCustomer = OpenEvent(SYNCHRONIZE, FALSE, "myEventCustomer");

hEventParik = OpenEvent(EVENT_MODIFY_STATE, FALSE, "myEventParik");

}

__fastcall TFormMain::TFormMain(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TFormMain::ButtonStartClick(TObject *Sender)

{

ButtonExit->Enabled = true;

Start();

}

//---------------------------------------------------------------------------

void __fastcall TFormMain::ButtonExitClick(TObject *Sender)

{

TerminateProcess(piApp1.hProcess,1);

TerminateProcess(piApp2.hProcess,1);

CloseHandle(piApp1.hThread);

CloseHandle(piApp1.hProcess);

CloseHandle(piApp2.hThread);

CloseHandle(piApp2.hProcess);

CloseHandle(hMutex);

CloseHandle(hSemSeat);

CloseHandle(hSemBench);

CloseHandle(hEventCustomer);

CloseHandle(hEventParik);

HWND KlientWin;

HWND ParikWin;

PostMessage(FindWindow(NULL, "Hall_1"), WM_QUIT,0,0);

PostMessage(FindWindow(NULL, "Barber"), WM_QUIT,0,0);

exit(0);

}

//---------------------------------------------------------------------------

3 Список использованных источников

  1. Романов В. Ф. Теория абстрактных автоматов. – Владимир, 2006.

  2. Карпов Ю. Г. Теория автоматов. – СПб.: Питер, 2002. - 206 с.

  3. Минский М. Вычисления и автоматы. – М.: Мир, 1971. - 364 с.

  4. Применение теории автоматов [Электронный ресурс]. Режим доступа: http://teorya.hut.ru