本文整理汇总了C++中WorkerThread::Start方法的典型用法代码示例。如果您正苦于以下问题:C++ WorkerThread::Start方法的具体用法?C++ WorkerThread::Start怎么用?C++ WorkerThread::Start使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorkerThread
的用法示例。
在下文中一共展示了WorkerThread::Start方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Initialize
int WorkQueue::Initialize() {
// init thread index for main thread
tls = new ThreadLocal();
ThreadLocal::SetThreadLocal(0);
// start threads
int cores = 4;
for (int i = 0; i < cores; i++) {
WorkerThread * Thread = new WorkerThread(this, i + 1);
Workers.PushBack(Thread);
Thread->Start();
}
return 0;
}
示例2: WorkerThread
int BasicTCPServer::WorkerThread::ThreadBody()
{
InternetAddress addr;
TCPSocket sock;
ActionStatus st = m_pServer->m_Listener.Accept(&sock, &addr);
if (st.Successful() && sock.Valid())
{
m_pServer->m_ActiveThreadCount++;
WorkerThread *pThread = new WorkerThread(m_pServer);
if (!pThread || !pThread->Start())
delete pThread;
m_pServer->ConnectionHandler(sock, addr);
}
if (!--m_pServer->m_ActiveThreadCount)
m_pServer->m_LastThreadDone.Set();
return 0;
}
示例3: main
int main()
{
WorkerThread* wt = new WorkerThread();
wt->Start( iThread::Priority_Normal );
wt->AddTask( new TestTask() );
wt->AddTask( new TestTask() );
wt->AddTask( new TestTask() );
// Wait for task completion
while ( wt->GetQueueSize() > 0 ) {}
fflush( stdout );
return 0;
}
示例4: Start
ActionStatus BasicTCPServer::Start(unsigned PortNumber)
{
if (m_ActiveThreadCount)
return MAKE_STATUS(InvalidState);
ActionStatus st = m_Listener.Listen(PortNumber);
if (!st.Successful())
return st;
m_LastThreadDone.Reset();
m_ActiveThreadCount++;
WorkerThread *pThread = new WorkerThread(this);
if (!pThread)
return MAKE_STATUS(NoMemory);
if (!pThread->Start())
{
delete pThread;
m_ActiveThreadCount--;
return MAKE_STATUS(UnknownError);
}
return MAKE_STATUS(Success);
}
示例5: IocpServd_main
USING_NS_IOCPSERVD
NS_IOCPSERVD_BEGIN
int IocpServd_main(int argc, char *argv[])
{
using namespace jimi;
jmLog.log_begin();
bool isService = true;
jimi::CommandLine cmdLine;
int cnt;
if ((cnt = cmdLine.parse(argc, argv)) >= 0) {
std::string strCmdLine = cmdLine.getCmdLine();
jmLog.info(strCmdLine.c_str());
}
IocpServdService *service = new IocpServdService();
if (service) {
IocpServdService::SetInstance(service, true);
service->SetServiceName(g_ServiceName);
service->SetServiceDisplayName(g_ServiceDisplayName);
service->SetServiceDescription(g_ServiceDescription);
jmLog.info("cmdLine.parse(argc, argv): argc_cnt = %d", cnt);
if (cmdLine.hasArgument("-run") || cmdLine.hasArgument("/run")
|| cmdLine.hasArgument("-r") || cmdLine.hasArgument("/r")) {
service->RunService();
//service->RunServiceEx(g_ServiceTable);
}
else if (cmdLine.hasArgument("-install") || cmdLine.hasArgument("/install")
|| cmdLine.hasArgument("-i") || cmdLine.hasArgument("/i")) {
service->InstallService();
}
else if (cmdLine.hasArgument("-uninstall") || cmdLine.hasArgument("/uninstall")
|| cmdLine.hasArgument("-u") || cmdLine.hasArgument("/u")
|| cmdLine.hasArgument("-uninst") || cmdLine.hasArgument("/uninst")) {
service->UninstallService();
}
else {
// is not a windows service
isService = false;
}
if (service) {
//service->Destroy();
delete service;
}
}
printf("\n");
#if 1
SampleThread *thread = new SampleThread();
thread->Start();
thread->Join();
thread->Abort(1000);
if (thread) {
delete thread;
}
WorkerThread *workerThread = new WorkerThread();
workerThread->Start();
workerThread->Join();
if (workerThread) {
delete workerThread;
}
printf("\n");
#endif
do {
jimi::Object *object = new jimi::Object();
jimi::Object newObject = object->Clone();
printf("newObject.Equals(object) = %d\n\n", newObject.Equals(object));
object->Close();
newObject.Close();
if (object)
delete object;
} while (0);
printf("\n");
do {
csharp::ManualResetEvent *event = new csharp::ManualResetEvent(false);
//ManualResetEvent event2(false);
csharp::EventWaitHandle *event3 = new csharp::EventWaitHandle();
csharp::EventWaitHandle *event_base = (csharp::EventWaitHandle *)event;
event->Set();
event->Reset();
if (event_base) {
delete event_base;
event_base = NULL;
}
if (event) {
//delete event;
event = NULL;
//.........这里部分代码省略.........
示例6: Run
int CSocketServer::Run()
{
try
{
vector<WorkerThread *> workers;
workers.reserve( m_numThreads );
for ( size_t i = 0; i < m_numThreads; ++i )
{
/*
* Call to unqualified virtual function
*/
WorkerThread *pThread = CreateWorkerThread( m_iocp );
workers.push_back( pThread );
pThread->Start();
}
HANDLE handlesToWaitFor[2];
handlesToWaitFor[0] = m_shutdownEvent.GetEvent();
handlesToWaitFor[1] = m_acceptConnectionsEvent.GetEvent();
while ( !m_shutdownEvent.Wait( 0 ) )
{
DWORD waitResult = ::WaitForMultipleObjects( 2, handlesToWaitFor, false, INFINITE );
if ( waitResult == WAIT_OBJECT_0 )
{
/*
* Time to shutdown
*/
break;
}
else if ( waitResult == WAIT_OBJECT_0 + 1 )
{
/*
* accept connections
*/
while ( !m_shutdownEvent.Wait( 0 ) && m_acceptConnectionsEvent.Wait( 0 ) )
{
CIOBuffer *pAddress = Allocate();
int addressSize = (int)pAddress->GetSize();
SOCKET acceptedSocket = ::WSAAccept(
m_listeningSocket,
reinterpret_cast<sockaddr *>(const_cast<BYTE *>( pAddress->GetBuffer() ) ),
&addressSize,
0,
0);
pAddress->Use( addressSize );
if ( acceptedSocket != INVALID_SOCKET )
{
Socket *pSocket = AllocateSocket( acceptedSocket );
/*
* Call to unqualified virtual function
*/
OnConnectionEstablished( pSocket, pAddress );
}
else if ( m_acceptConnectionsEvent.Wait( 0 ) )
{
/*
* Call to unqualified virtual function
*/
OnError( _T("CSocketServer::Run() - WSAAccept:") + GetLastErrorMessage( ::WSAGetLastError() ) );
}
pAddress->Release();
}
}
else
{
/*
* Call to unqualified virtual function
*/
OnError( _T("CSocketServer::Run() - WaitForMultipleObjects: ") + GetLastErrorMessage( ::GetLastError() ) );
}
}
for ( i = 0; i < m_numThreads; ++i )
{
workers[i]->InitiateShutdown();
}
for ( i = 0; i < m_numThreads; ++i )
{
workers[i]->WaitForShutdownToComplete();
delete workers[i];
workers[i] = 0;
}
}
//.........这里部分代码省略.........