免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 919 | 回复: 1
打印 上一主题 下一主题

请教一个detach线程的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-08-17 19:44 |只看该作者 |倒序浏览
我有一个接收/处理线程,其中有一个处理结果链表。当特定的情况下(达到规定时间,或者处理结果链表超过规定的数量),我要把处理结果写入数据库。为了不耽误接收线程的工作,入库必须要用一个新的线程!
因为我接触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();之后程序自动退出。
我的问题是这个独立的线程,会自行销毁吗?另外我对线程的这种方法对吗?

论坛徽章:
0
2 [报告]
发表于 2004-08-17 19:46 |只看该作者

请教一个detach线程的问题

void CWritedb::SetNfMonitor(deque<Nf_Monitor>; *NfMonitorList) {
        m_NfMonitorList = NfMonitorList;
        m_writetype = 2;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP