Si può usare un semaforo ( o evento ) per sincronizzare i due processi.
Il processo B resta in attesa del via libera da A.
A fa quel che deve fare e quando serve, da via libera a B.
Il problema è che, se non si fa attenzione, se A s'inchioda prima di dare il via libera a B, B resta fermo al palo e va chiuso brutalmente.
Due esempi minimali (gestione errori a carico tuo ovviamente).
Processo A:
Processo B:codice:#include <iostream> #include <windows.h> using namespace std; int main() { HANDLE Start = CreateEventW(0,0,0,L"freetom"); if (Start == NULL) { cout << "fallito" << endl; return 1; } cout << "Attendo 10 secondi" << endl; Sleep(10000); cout << "Premi un tasto" << endl; SetEvent(Start); CloseHandle(Start); cin.get(); }
codice:#include <iostream> #include <windows.h> using namespace std; int main(int argc, char* argv[]) { HANDLE Start = CreateEvent(0,0,0,L"freetom"); if (Start == NULL) { cout << "fallito" << endl; return 1; } cout << "sono bloccato" << endl; WaitForSingleObject(Start,60000); cout << "sono sbloccato" << endl; cout << "Premi un tasto" << endl; CloseHandle(Start); cin.get(); return 0; }

Rispondi quotando