Chinaunix

标题: 线程中sleep问题 [打印本页]

作者: reer    时间: 2009-04-08 15:11
标题: 线程中sleep问题
在这个网页里:
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);
}
作者: astezheng    时间: 2009-04-08 15:16
标题: 回复 #1 reer 的帖子
可以考虑同步,也可以在主线程里面设置,子线程不分离,然后pthread_join,
如果非要sleep的话,建议用select定时

[ 本帖最后由 astezheng 于 2009-4-8 15:22 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2