免费注册 查看新帖 |

Chinaunix

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

判断线程是否存在 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-15 15:45 |只看该作者 |倒序浏览
int main()
    329 {
    330         pthread_t th_sock;
    331         int val;
    332
    33
    335
    336         val = pthread_kill(th_sock,0);
    337         if(val != 0)
    338         {
    339                 if(val == ESRCH)
    340                 {
    341                    printf("thread is NULL\n");
    342                   if( pthread_create(&th_sock,NULL,,NULL) != 0)
    343                   {
    344                           exit(1);
    345                   }
    346                 }
    347         }
    348         return 0;
    349 }
我的目的是在线程没有创建之前,先判断其是否存在,如果不存在就创建th_sock,去执行thread_sock,然后再thread_sock中在创建一个监听线程,如果我不用线程去调用thread_sock函数,直接引用就没有问题,可是要创建线程时就不能正确执行。望高人指正错误。

论坛徽章:
0
2 [报告]
发表于 2007-01-15 16:09 |只看该作者
不能正确执行的話,有啥不對呢?是根本没有執行到還是別的什麽?

论坛徽章:
0
3 [报告]
发表于 2007-01-15 16:16 |只看该作者
我刚才试了一下pthread_kill返回值为0,可是我根本没有启动线程阿,为此我又重新重起了机器,也是返回值为0表示线程存在阿,晕

论坛徽章:
0
4 [报告]
发表于 2007-01-15 16:36 |只看该作者
自己顶一下

论坛徽章:
0
5 [报告]
发表于 2007-01-16 00:20 |只看该作者
  1. int pthread_kill(pthread_t thread, int sig);
  2. The pthread_kill() function is used to request that a signal be delivered to the specified thread.

  3. As in kill(), if sig is zero, error checking is performed but no signal is actually sent.
复制代码

论坛徽章:
0
6 [报告]
发表于 2007-01-16 09:12 |只看该作者
我昨天换了一台机器,我的这个函数能够正确执行,可是我在本机是不能正确执行的。

论坛徽章:
0
7 [报告]
发表于 2007-01-16 12:29 |只看该作者
330         pthread_t th_sock;
    331         int val;
    332
    33
    335
    336         val = pthread_kill(th_sock,0);

th_sock 未初始化。。。

pthread_create(&th_sock,NULL,,NULL) // 第三个参数哪去了?

晕。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP