当前位置: 技术问答>linux和unix
socket+多进程+多线程
来源: 互联网 发布时间:2016-03-23
本文导语: 想请问下 在Linux下 如何实现主进程accept()后开一个线程处理,而当线程数大于10时,另开一个进程,该进程又可以包含10个处理线程处理之后的10个连接。以实现一个线程死亡仅导致同进程的这些线程死。 ...
想请问下
在Linux下 如何实现主进程accept()后开一个线程处理,而当线程数大于10时,另开一个进程,该进程又可以包含10个处理线程处理之后的10个连接。以实现一个线程死亡仅导致同进程的这些线程死。
在Linux下 如何实现主进程accept()后开一个线程处理,而当线程数大于10时,另开一个进程,该进程又可以包含10个处理线程处理之后的10个连接。以实现一个线程死亡仅导致同进程的这些线程死。
|
父子进程加共享内存进行管理,父进程在调用listen后fork一个子进程,在子进程中进行accept,并且在共
享内存中做该子进程相应的标记,当有tcp连接到来时,子进程生成线程进行连接的处理,并且设定共享内存
中相关的值,当该值到达一定的数目时,子进程不在调用accept获取新的连接。父进程检测共享内存中的标
记值,当到达一定的数目时fork新的进程进行处理。
享内存中做该子进程相应的标记,当有tcp连接到来时,子进程生成线程进行连接的处理,并且设定共享内存
中相关的值,当该值到达一定的数目时,子进程不在调用accept获取新的连接。父进程检测共享内存中的标
记值,当到达一定的数目时fork新的进程进行处理。
|
建议楼主看看select 或者 poll ,如果连接数多,可以看看epoll
|
直接epoll好了
|
完全没有必要又开进程,又开线程!完全可以采用select提供的IO多路复用技术,如果是访问量很大,CPU成为了最主要的屏劲,可以结合多线程技术来实现!不要一味地fork,fork....