两个线程共用缓存的问题 读写的指针作为全局变量吧需要修改指针值的时候用InterlockedExchange函数,控制指针值的时候小心一点就不会有共享冲突的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的缓冲区可以动态得分呀,这样就不会出现缓冲区溢出了,比如用CArray<CType*, CType*>,你用一个线程去往数组里添加,另外一个读并负责释放内存就行了;CArray<yourType *,yourType*>buffData;Thread1yourType *p=New yourType();buffData.Add(p)thread2yourType *p=bufferData.GetAt(i);delete bufferDataAt(i);bufferData.RemoveAt(i) CArray有时会引起大量的数据移动操作,不太好吧? InterlockedExchange会占用很多时间吗? 关键要看当数据溢出时你的处理方案。如果是忽略新数据或覆盖最老数据的话,用circle buffer。如果是关键数据,必须处理的话,只好采取动态分配空间的办法了。 是呀,你可以用CircleBuffer,然后使两个线程互斥,这要就不会有两个线程同时修改指针的问题了(不知道你的要求是怎样的,如果是要求写一个数据,然后读一个数据,就是要使两个线程同步,如果你学过操作系统,你应该知道这是一个很经典的问题,有很好的方法解决的) to amoroso没事的,InterlockedExchange已经包含了同步机制了,同时读写的话,读到的要么是写前的,要么是写后的,不会是脏的,很快的。 线程调度问题 ini writeprivateprofilestring getprivateprofilestring 冲突 请问位图导入的大小是否有限制??? 北京拓敏公司怎么样?? 用ADO访问数据库取得数据库里字段的方法 在VC里面怎样实现对数据库的备份?????????????? 我能卖多少钱? error C2872: “CDC”: 不明确的符号 该怎么处理? 动态生成的Button怎样响应它的时件呢? 如何获得网页的HTTP请求包(来者有分) toolBar问题 请问,环境变量怎么理解?
yourType *p=New yourType();
buffData.Add(p)thread2
yourType *p=bufferData.GetAt(i);
delete bufferDataAt(i);
bufferData.RemoveAt(i)
如果是忽略新数据或覆盖最老数据的话,用circle buffer。
如果是关键数据,必须处理的话,只好采取动态分配空间的办法了。
没事的,InterlockedExchange已经包含了同步机制了,同时读写的话,读到的要么是写前的,要么是写后的,不会是脏的,很快的。