Skip to content
Snippets Groups Projects
Commit 220ce786 authored by rswindell's avatar rswindell
Browse files

CLX thread example.

parent 21e87cdc
No related branches found
No related tags found
No related merge requests found
//---------------------------------------------------------------------------
#include <stdio.h> /* getchar */
#include <clx.h>
#include "TestThreadUnit.h"
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
TTestThread* Thread=new TTestThread(false /* create suspended? */);
Thread->ChildEvent->WaitFor(10000); /* wait for thread to begin */
Thread->ChildEvent->ResetEvent();
for(int i=0;i<10;i++) {
printf("<parent>");
Thread->ParentEvent->SetEvent();
Thread->ChildEvent->WaitFor(10000);
Thread->ChildEvent->ResetEvent();
}
Thread->ChildEvent->WaitFor(10000); /* wait for thread to end */
Thread->Terminate();
getchar();
return 0;
}
//---------------------------------------------------------------------------
\ No newline at end of file
This file is used by the project manager only and should be treated like the project file
main
\ No newline at end of file
<?xml version='1.0' encoding='utf-8' ?>
<!-- C++Builder XML Project -->
<PROJECT>
<MACROS>
<VERSION value="BCB.06.00"/>
<PROJECT value="TestThread.exe"/>
<OBJFILES value="MainUnit.obj TestThreadUnit.obj"/>
<RESFILES value="TestThread.res"/>
<IDLFILES value=""/>
<IDLGENFILES value=""/>
<DEFFILE value=""/>
<RESDEPEN value="$(RESFILES)"/>
<LIBFILES value=""/>
<LIBRARIES value=""/>
<SPARELIBS value="rtl.lib"/>
<PACKAGES value="vcl.bpi rtl.bpi dbrtl.bpi adortl.bpi vcldb.bpi vclx.bpi bdertl.bpi
vcldbx.bpi ibxpress.bpi dsnap.bpi cds.bpi bdecds.bpi qrpt.bpi teeui.bpi
teedb.bpi tee.bpi dss.bpi teeqr.bpi visualclx.bpi visualdbclx.bpi
dsnapcrba.bpi dsnapcon.bpi bcbsmp.bpi vclie.bpi xmlrtl.bpi inet.bpi
inetdbbde.bpi inetdbxpress.bpi inetdb.bpi nmfast.bpi webdsnap.bpi
bcbie.bpi websnap.bpi soaprtl.bpi dclocx.bpi dbexpress.bpi dbxcds.bpi
indy.bpi bcb2kaxserver.bpi"/>
<PATHCPP value=".;"/>
<PATHPAS value=".;"/>
<PATHRC value=".;"/>
<PATHASM value=".;"/>
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
<RELEASELIBPATH value="$(BCB)\lib\release"/>
<LINKER value="ilink32"/>
<USERDEFINES value="_DEBUG"/>
<SYSDEFINES value="NO_STRICT;_RTLDLL;USEPACKAGES"/>
<MAINSOURCE value="TestThread.bpf"/>
<INCLUDEPATH value="C:\src\xpdev\clx;$(BCB)\include;$(BCB)\include\vcl"/>
<LIBPATH value="C:\src\xpdev\clx;$(BCB)\lib\obj;$(BCB)\lib"/>
<WARNINGS value="-w-par"/>
<OTHERFILES value=""/>
</MACROS>
<OPTIONS>
<IDLCFLAGS value="-IC:\src\xpdev\clx -I$(BCB)\include -I$(BCB)\include\vcl -src_suffix cpp
-D_DEBUG -boa"/>
<CFLAG1 value="-tWC -tWM -H=$(BCB)\lib\clx60.csm -Od -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v
-vi- -c"/>
<PFLAGS value="-$YD -$W -$O- -$A8 -v -JPHNE -M"/>
<RFLAGS value=""/>
<AFLAGS value="/mx /w2 /zd"/>
<LFLAGS value="-Tpe -ap -D&quot;&quot; -x -Gn -v"/>
<OTHERFILES value=""/>
</OPTIONS>
<LINKER>
<ALLOBJ value="c0x32.obj $(PACKAGES) Memmgr.Lib sysinit.obj $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib"/>
<OTHERFILES value=""/>
</LINKER>
<FILELIST>
<FILE FILENAME="TestThread.res" FORMNAME="" UNITNAME="TestThread.res" CONTAINERID="ResTool" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="TestThread.bpf" FORMNAME="" UNITNAME="TestThread" CONTAINERID="BPF" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="MainUnit.cpp" FORMNAME="" UNITNAME="MainUnit" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="TestThreadUnit.cpp" FORMNAME="" UNITNAME="TestThreadUnit" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
</FILELIST>
<BUILDTOOLS>
</BUILDTOOLS>
<IDEOPTIONS>
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1033
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
[Parameters]
RunParams=
Launcher=
UseLauncher=0
DebugCWD=
HostApplication=
RemoteHost=
RemotePath=
RemoteLauncher=
RemoteCWD=
RemoteDebug=0
[Compiler]
ShowInfoMsgs=0
LinkDebugVcl=0
LinkCGLIB=0
[CORBA]
AddServerUnit=1
AddClientUnit=1
PrecompiledHeaders=1
[Language]
ActiveLang=
ProjectLang=
RootDir=
</IDEOPTIONS>
</PROJECT>
\ No newline at end of file
//---------------------------------------------------------------------------
#include <stdio.h> /* printf */
#include <vcl.h>
#pragma hdrstop
#include "TestThreadUnit.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall TTestThread::TTestThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
ChildEvent = new TSimpleEvent();
ParentEvent = new TSimpleEvent();
}
//---------------------------------------------------------------------------
__fastcall TTestThread::~TTestThread()
{
delete ChildEvent;
delete ParentEvent;
}
//---------------------------------------------------------------------------
void __fastcall TTestThread::Execute()
{
printf("TestThread::Execute() entry\n");
ChildEvent->SetEvent();
for(int i=0;i<10;i++) {
ParentEvent->WaitFor(10000);
ParentEvent->ResetEvent();
printf(" <child>\n");
ChildEvent->SetEvent();
}
printf("thread_test exit\n");
ChildEvent->SetEvent();
}
//---------------------------------------------------------------------------
\ No newline at end of file
//---------------------------------------------------------------------------
#ifndef TestThreadUnitH
#define TestThreadUnitH
//---------------------------------------------------------------------------
#include <classes.hpp>
#include <syncobjs.hpp> /* TEvent/TSimpleEvent */
//---------------------------------------------------------------------------
class TTestThread : public TThread
{
private:
protected:
void __fastcall Execute();
public:
TSimpleEvent* ChildEvent;
TSimpleEvent* ParentEvent;
__fastcall TTestThread(bool CreateSuspended);
__fastcall ~TTestThread();
};
//---------------------------------------------------------------------------
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment