免费注册 查看新帖 |

Chinaunix

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

线程中sleep问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-08 15:11 |只看该作者 |倒序浏览
在这个网页里:
http://man.lupaworld.com/content/develop/joyfire/system/11.html#I260

有一句话:
当线程调用sleep时,整个的进程都处于睡眠状态,也就是说,所有的三个线程都进入睡眠状态。这样我们实际上没有解决任何的问题。

但是,在下面这个简单例子里,sleep(1)后,线程thr_fn才会被执行,如果没有sleep(1),线程thr_fn不会执行,这不是说明sleep可以保证子线程正常运行到吗,当然也解决了子线程不起来的问题:


pthread_t ntid;

void *thr_fn(void *arg)
{
    printf("new thread: ");
    return((void *)0);
}

int main(void)
{
    pthread_create(&ntid, NULL, thr_fn, NULL);
    printf("main thread:");
    sleep(1);
    exit(0);
}

论坛徽章:
0
2 [报告]
发表于 2009-04-08 15:16 |只看该作者

回复 #1 reer 的帖子

可以考虑同步,也可以在主线程里面设置,子线程不分离,然后pthread_join,
如果非要sleep的话,建议用select定时

[ 本帖最后由 astezheng 于 2009-4-8 15:22 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP