当前位置: 技术问答>linux和unix
关于POSIX进程和线程的两个问题
来源: 互联网 发布时间:2014-11-08
本文导语: 1. 一直认为,一个进程可以有多个线程,那么: 一个多线程程序,其中一个线程调用fork创建了新进程,那么 新出来的进程是否也是多线程的(即fork时的其他线程是否保留)? 我本以为按照进程...
1. 一直认为,一个进程可以有多个线程,那么:
一个多线程程序,其中一个线程调用fork创建了新进程,那么
新出来的进程是否也是多线程的(即fork时的其他线程是否保留)?
我本以为按照进程与线程的关系,fork出来的进程也是多线程的。
但是,我在solaris2.6下试验了,结果是没有,即fork出的进程是单线程的。
那么到底应该怎样呢?
2. sleep 是对进程的还是对线程的?
我一直以为在线程中要延时,不能用sleep,否则整个进程会睡眠,
只能用select或者pthread_cond_timedwait,可是在最近的csdn杂志
上看到介绍线程的文章,里面的延时用的是sleep,于是我做了试验,
还是solaris2.6,发现sleep是可以线程睡眠的,关于这方面有明确定义吗?
一个多线程程序,其中一个线程调用fork创建了新进程,那么
新出来的进程是否也是多线程的(即fork时的其他线程是否保留)?
我本以为按照进程与线程的关系,fork出来的进程也是多线程的。
但是,我在solaris2.6下试验了,结果是没有,即fork出的进程是单线程的。
那么到底应该怎样呢?
2. sleep 是对进程的还是对线程的?
我一直以为在线程中要延时,不能用sleep,否则整个进程会睡眠,
只能用select或者pthread_cond_timedwait,可是在最近的csdn杂志
上看到介绍线程的文章,里面的延时用的是sleep,于是我做了试验,
还是solaris2.6,发现sleep是可以线程睡眠的,关于这方面有明确定义吗?
|
1. under Solaris2.6, man fork1(2)
2. sleep(2) is an old api running on process scope. for new threading subsystem, use semaphore/mutex for delay/synchronization requirements. posix library is capable of most reqirements from application, no need of using old api to aid your programming model.
2. sleep(2) is an old api running on process scope. for new threading subsystem, use semaphore/mutex for delay/synchronization requirements. posix library is capable of most reqirements from application, no need of using old api to aid your programming model.