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; } bool bSignal = event3->WaitOne(); if (event3) delete event3; } while (0); printf("\n"); ///* //mt::mutex read_mutex; //mt::scoped_lock<mt::mutex> lock(read_mutex); mt::mutex read_mutex; mt::scoped_lock<mt::mutex> lock(read_mutex); lock.acquire(read_mutex); lock.try_acquire(read_mutex, 4000); lock.release(); //*/ if (!isService) ::system("pause"); jmLog.log_end(); return 0; }