#include using namespace boost::posix_time; #include using namespace std; #include int main() { HANDLE sem1 = CreateSemaphore(NULL, 0, 1, "wsem1"); if(GetLastError() == ERROR_ALREADY_EXISTS) { CloseHandle(sem1); sem1 = CreateSemaphore(NULL, 0, 1, "wsem1"); } HANDLE sem2 = CreateSemaphore(NULL, 0, 1, "wsem2"); if(GetLastError() == ERROR_ALREADY_EXISTS) { CloseHandle(sem2); sem1 = CreateSemaphore(NULL, 0, 1, "wsem2"); } if(sem1 == NULL || sem2 == NULL) { cerr << "HOUSTON WE HAVE A PROBLEM" << endl; } DWORD waitResult; LONG previous; while(true) { waitResult = WaitForSingleObject(sem1, INFINITE); if(waitResult != WAIT_OBJECT_0) { cerr << "WTF B " << waitResult << " / " << GetLastError() << endl; break; } // else { // cerr << "Got B" << endl; // } if(!ReleaseSemaphore(sem2, 1, &previous)) { cerr << "Release semaphore B error: " << GetLastError() << endl; } // else { // cerr << "Previous B: " << previous << endl; // } } return 0; }