专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

linux多线程编程中,每个线程可能有自己独立的缓冲区么?该如何解决

发布时间:2011-06-28 16:16:32 文章来源:www.iduyao.cn 采编人员:星星草
linux多线程编程中,每个线程可能有自己独立的缓冲区么?
初学linux多线程编程,不知道每个线程可不可能有自己独立的缓冲区。因为线程间是共享父进程的资源,意思是说如果父进程建立一个缓冲区的话,这个进程中的线程可以通过加锁互斥访问,但是我遇到一个问题:
在网络编程中,一个服务器假设有三个客户连接sockfd1,sockfd2,sockfd3,当为每个socket连接建立一个线程接发数据的时候,如果共用同一个缓冲区,就算加了锁,数据仍然有可能出现不正确的情况,也就是说可能把sockfd2的数据当成sockfd1的,所以我想能不能为每个线程开辟单独的缓冲区????以避免数据的串扰...如果使用多进程的话,缓冲区问题到能解决,但是当连接数目过多性能可能会降低。。。或者我设计思路不是很对,有没其他的解决方案,我初学,大家提供下思路。

------解决方案--------------------
gcc 线程本地存储
pthread 线程本地存储

其实没那么麻烦,自己在线程里面 malloc 一个就好了……
------解决方案--------------------
探讨
引用:
很简单的问题
#define MAXTHREADS 10
#define MAXBUFFERSIZE 8192
char buffer[MAXTHREADS][MAXBUFFERSIZE];

您好,我的函数需要重入的,也就是说对每个连接来说处理函数是相同的,所以我的想法是每来一个连接便pthread_create()一个线程处理客户需求……
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: