C++下实现多线程访问一个数组

jtg98g3 2010-01-24 11:14:25
class TDateList
{
private:
DateType * DateArr;
gatherThreadType *gatherArr;
transactThreadType *transactArr;
protected:

public:
__fastcall TDateList();
__fastcall TDateList();
__fastcall int Add(EpcDateType *Date);
__fastcall void Remove(int ListIndex);
__fastcall int getCount();
__fastcall void Start();
//__published:

};

比如这个。

add是多线都要执行的。

remove是一个线成会执行的。

他们都对DateArr访问

多个线程通过tcp采集数据。一个线程对这个数据进行处理。处理完后删除最前面的一个。

这样就形成一个队列。
我目前用C++builder做开发.是windows下的多线程.
...全文
763 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2010-01-28
  • 打赏
  • 举报
回复
使用临界区~~~~
Lixinag 2010-01-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhouzhangkui 的回复:]
操作數組的時候 需要添加臨界區來加鎖解鎖
保證數據的正確性
[/Quote]


正解
regersubadm 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 songhtao 的回复:]
用TCriticalSection的Enter和 leave保护数组资源
[/Quote]

Vcl的很多对象都是这样保护的。
我不懂电脑 2010-01-25
  • 打赏
  • 举报
回复
用TCriticalSection的Enter和 leave保护数组资源
TripH0101 2010-01-25
  • 打赏
  • 举报
回复
使用信号量
周药师 2010-01-25
  • 打赏
  • 举报
回复
操作數組的時候 需要添加臨界區來加鎖解鎖
保證數據的正確性
EagleFew 2010-01-25
  • 打赏
  • 举报
回复
加上一个临界区

或者使用线程安全的TThreadList

TThreadList *ThreadList;

ThreadList->LockList();
// do your job
ThreadList->UnlockList();
xjq2003 2010-01-25
  • 打赏
  • 举报
回复
可以使用信号量

13,869

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧