TLightweightEvent (C++)
Description
This example illustrates the use of the TLightweightEvent class.
The main thread does the following: creates a secondary thread, waits 100 milliseconds, and then sets the application-specific event ReadyFlag. The secondary thread cannot perform a certain operation (display a message) until ReadyFlag is set, so it is blocked for approximately 100 milliseconds.
Code
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
#include <Classes.hpp>
#include <DateUtils.hpp>
#include <iostream>
#include <string>
using namespace std;
// ---------------------------------------------------------------------------
#pragma argsused
static TLightweightSemaphore *consoleSemaphore;
class TThreadRoadRunner : public TThread {
private:
TSynchroObject *FReadyFlag;
void __fastcall Execute() {
FReadyFlag->Acquire(); // Polymorphic call
cout << "Running started" << endl;
}
public:
TThreadRoadRunner(bool createSuspended, TSynchroObject *ASyncObj)
: TThread(createSuspended) {
FReadyFlag = ASyncObj;
}
};
int _tmain(int argc, _TCHAR* argv[]) {
TLightweightEvent *readyFlag = new TLightweightEvent();
TThreadRoadRunner *roadRunner = new TThreadRoadRunner(true, readyFlag);
roadRunner->Start();
Sleep(100);
readyFlag->SetEvent();
Sleep(100);
return 0; // Put breakpoint here to see the console output.
}
Uses
- System.SyncObjs.TLightweightEvent ( fr | de | ja )
- System.SyncObjs.TLightweightEvent.WaitFor ( fr | de | ja )
- System.SyncObjs.TSynchroObject.Acquire ( fr | de | ja )