使用一个线程不断读取文本数据,然后将读取的数据存入vector,
然后启动另一个线程不断读取vector,将读到的数据发送至屏幕上,发现屏幕上经常
出现空行,调试才发现vector有时候整个都会变为全空,才会显示空行,而下1秒,vector数据就会全部恢复正常。请问这是怎样导致的?
和vector结构有关吗?
typedef struct stTraceInfo
{
string ID;
string Component;
string Date;
string Time;
string Subsystem;
string Operation;
string Event;
string str[7];
}TraceInfo, *pstTraceInfo;
vector <stTraceInfo> g_stvec;
当Vector中的元素超过它的初始大小时,Vector会将它的容量翻倍,是不是元素个数过多呢
会不会是多线程的问题,加个锁?
去掉一个线程先测试一下呗!
显示数据应该在主线程里处理啊!
线程都是在抢时间片干活的,读入的线程没抢的输出的线程不就空了么
路过看看有什么吗发v884885
Vector就是同步的 不用加锁了 我本地试了下没出现楼主说的情况 尴尬了
是不是还没有写入的时候就来读取了啊。
使用一个线程不断读取文本数据,然后将读取的数据存入vector,
然后启动另一个线程不断读取vector,将读到的数据发送至屏幕上,
这不就是典型的“生产者-消费者”模型吗,设置一个缓冲区,很容易解决