即使目标线程正在运行,主线程也会在pthread_join之后恢复执行

时间:2012-01-20 12:41:49

标签: c++ multithreading solaris

我们在其中一个客户环境中面临着非常奇怪的问题。主线程启动目标pthread,然后等待pthread_join。然后我们运行由目标线程处理的流量,但几分钟后我们发现主线程在pthread_join之后恢复执行。目标线程尚未完成并仍在运行。这是在Solaris9 Sparc上运行的,我们已经使用ps -eLf命令验证了目标线程已启动的线程。

如果他们在Solaris9 Sparc上看到了POSIX线程的这种行为,那么任何人都可以提供帮助。

extern "C" void *launchSmtpThread(void *idp)
{
   SmtpServerArg *serverArg = (SmtpServerArg*) idp;
   int rc = startSmtpServer(serverArg);
   cout <<"***********ERRORCODE from SMTP =="<<rc<<endl;
   return NULL;
}

-------------------
 ------------------
int main(int argc, char* argv[])
{

   ----------------------
   ----------------------
   smtpserverArg.config = &smtpConfig;
   smtpserverArg.appAlocFn = &createSmtpApp;

   pthread_t tid;
   pthread_create(&tid, NULL, launchSmtpThread, (void *)&smtpserverArg);

    -----------------
    ----------------- 

   //*****************************
   //wait on SmtpServer thread
   //*****************************
   int status;
   pthread_join(tid,(void**)&status);

   cout<< "exiting main()"<<endl;
}

0 个答案:

没有答案