多个线程访问同一块内存区不同的地址段可以吗?
我有一块内存区是要往里面写数据的,这个内存区比较大,比如说,我把它分为了4个小块,每块大概40个字节,然后在四个线程里面分别向四个小块内存里写数据,这样会报错吗,需要信号量之类的吗?
[解决办法]
那要看你怎么写了,用四个指针?
[解决办法]
在四个线程里面分别向四个小块内存里写数据
=========
肯定可以的。
[解决办法]
可以的,在其它方面查找原因吧,跟踪调试一下
[解决办法]
mengxiang2003(blog.sina.com.cn/fantasyfly) ( ) 信誉:96 Blog 加为好友 2007-05-25 13:34:59 得分: 0
恩,这块内存的指针是pData,
然后在每个线程里定义一个指针
线程1:pData1 = pData;
线程2:pData2 = pData + 40;
线程3:pData3 = pData + 80;
线程4:pData4 = pData + 120;
这样行吗?为什么总是运行错误呢
=========================================================
pData是什么类型,pData1 又是什么类型?
char* pch=123;
pch++;
此时pch的数值是124
int* pint=123;
pint++;
此时pint的数值是127(123+4)
如果*pData的类型是1字节大小,如你所言,每块区域40字节大小,否则,每块区域大小为40*sizeof(*pData),这就有可能造成访问越界,异常在所难免了。
因为不知道具体的代码情况,只能猜测了,你自己看一下是不是这个问题。
[解决办法]
不会报错的,但如果有交叉的话就需要同步才不会出错