首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-20 
linux多线程编程中,每个线程可能有自己独立的缓冲区么?初学linux多线程编程,不知道每个线程可不可能有自己

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

[解决办法]
gcc 线程本地存储
pthread 线程本地存储

其实没那么麻烦,自己在线程里面 malloc 一个就好了……
[解决办法]

探讨
引用:
很简单的问题
#define MAXTHREADS 10
#define MAXBUFFERSIZE 8192
char buffer[MAXTHREADS][MAXBUFFERSIZE];

您好,我的函数需要重入的,也就是说对每个连接来说处理函数是相同的,所以我的想法是每来一个连接便pthread_create()一个线程处理客户需求……

热点排行