Chinaunix
标题:
请教一个detach线程的问题
[打印本页]
作者:
s5un
时间:
2004-08-17 19:44
标题:
请教一个detach线程的问题
我有一个接收/处理线程,其中有一个处理结果链表。当特定的情况下(达到规定时间,或者处理结果链表超过规定的数量),我要把处理结果写入数据库。为了不耽误接收线程的工作,入库必须要用一个新的线程!
因为我接触Unix不久,对它的线程认识不多,下面是部分的源代码,
*** 调用 ***
。。。。。。
for( ; ; ) {
。。。。。。
FD_ZERO(&readfds);
FD_SET(sock,&readfds);
FD_ZERO(&errfds);
FD_SET(sock,&errfds);
if(select(sock+1, &readfds, NULL, &errfds, &tv)) {
if(FD_ISSET(sock, &readfds)) {
memset(buf,0,204
;
if((len = recvfrom(sock,buf,2048,0,(struct sockaddr *)&from,&fromlen)) != -1) {
。。。。。。
pWritedb = new CWritedb();
pWritedb->;SetNfMonitor(&WriteMonitorList);
int t = pWritedb->;run();
。。。。。。
*** 实现 ***
pthread_t CWritedb::run() {
pthread_create(&m_pthread_tid, NULL, action, this);
return m_pthread_tid;
}
void * CWritedb::action(void *arg) {
cout<<"in CWritedb::action";
CWritedb *pWritedb = (CWritedb *)arg;
pthread_detach(pthread_self());
。。。。。。
**********
程序需要入库线程是独立的,所以有pthread_detach()一行,程序中还有其他的线程操作,但不需要detach,所以工作的都还好。但是这个入库线程却工作的不行。在
int t = pWritedb->;run();
之后程序自动退出。
我的问题是这个独立的线程,会自行销毁吗?另外我对线程的这种方法对吗?
作者:
s5un
时间:
2004-08-17 19:46
标题:
请教一个detach线程的问题
void CWritedb::SetNfMonitor(deque<Nf_Monitor>; *NfMonitorList) {
m_NfMonitorList = NfMonitorList;
m_writetype = 2;
}
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2