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