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:
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();
}
Processo B:
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;
}