linux下fork和pthread混用的问题
2010-11-10 22:37
357 查看
linux下编程处理并行任务时,可以采用多进程模块(fork)或者多线程模型(pthread)。有时候还会采用混合的模式。
当混合使用两者的时候,可能存在一些问题。
一种情况是:
进程创建了一些线程,然后执行了fork。代码编写者的意图可能是希望fork出很多个副本,执行同样的任务。可是fork之前创建的线程却并没有被复制,只有最初的进程拥有该线程。
另一种情况是:
进程创建了一些线程用于处理一些工作。然后希望转到后台运行,于是调用了daemon函数。这时,发现进程确实转到后台了。但是开始创建的线程却莫名其妙地退出了。原因和上面是一样的。daemon函数也是通过fork出子进程并退出父进程实现的。fork出来的子进程并没有父进程在fork之前创建的线程。而这些线程则随父进程退出而一起被销毁了。
因此,在使用daemon函数或者fork的时候,如果要创建线程,一定要在他们之后创建。父进程应该只做简单的初始化工作。
当混合使用两者的时候,可能存在一些问题。
一种情况是:
进程创建了一些线程,然后执行了fork。代码编写者的意图可能是希望fork出很多个副本,执行同样的任务。可是fork之前创建的线程却并没有被复制,只有最初的进程拥有该线程。
另一种情况是:
进程创建了一些线程用于处理一些工作。然后希望转到后台运行,于是调用了daemon函数。这时,发现进程确实转到后台了。但是开始创建的线程却莫名其妙地退出了。原因和上面是一样的。daemon函数也是通过fork出子进程并退出父进程实现的。fork出来的子进程并没有父进程在fork之前创建的线程。而这些线程则随父进程退出而一起被销毁了。
因此,在使用daemon函数或者fork的时候,如果要创建线程,一定要在他们之后创建。父进程应该只做简单的初始化工作。
相关文章推荐
- linux下fork和pthread混用的问题
- Unix下fork与pthread混用的问题
- linux下c程序 daemon、fork与创建pthread的顺序问题
- Unix下fork与pthread混用的问题
- linux下开发,解决cocos2d-x中编译出现的一个小问题, undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
- Linux下调用fork或system启动子进程的信号和资源释放相关问题
- Linux下调用fork或system启动子进程的信号和资源释放相关问题
- Linux程序设计入门 - fork, pthread, and signals
- Linux下undefined reference to ‘pthread_create’问题解决接触了Linux系统编程中的线程编程模块,可gcc sample.c(习惯把书上的sample代码写
- Linux下pthread的读写锁的优先级问题
- linux下错误使用pthread_mutex_lock导致程序奔溃问题分析
- linux学习笔记4--线程编程 undefined reference to 'pthread_create'问题
- 【linux】——undefined reference to 'pthread_create'问题解决
- 话说linux 下的pthread 内存问题 (Valgrind 检测 及定位排除)
- Linux下undefined reference to ‘pthread_create’问题解决
- linux编译时“ '对pthread_create' 未定义的引文"问题的解决方法
- 在Linux环境上面,su切换到oracle时出现"-bash:fork:Resource temporarily unavailable"问题
- Linux下"undefined reference to ‘pthread_create’"问题解决
- Linux下C语言的fork()子进程函数用法及相关问题解析
- Linux下undefined reference to ‘pthread_create’问题解决