oqqsoap1234567
alexsendar
采纳率80%
2017-04-01 06:36 阅读 1.6k
已采纳

vector为什么会全部为空?

20

使用一个线程不断读取文本数据,然后将读取的数据存入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;
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

8条回答 默认 最新

  • 已采纳
    HackAge4619 写给初学者的几封信 2017-04-01 06:55

    当Vector中的元素超过它的初始大小时,Vector会将它的容量翻倍,是不是元素个数过多呢

    点赞 评论 复制链接分享
  • u014228701 darkalliance 2017-04-01 06:46

    会不会是多线程的问题,加个锁?

    点赞 评论 复制链接分享
  • kaizi318 keivin2006 2017-04-01 06:48

    去掉一个线程先测试一下呗!

    显示数据应该在主线程里处理啊!

    点赞 评论 复制链接分享
  • songqiang2011 像忘了谁sq 2017-04-01 07:04

    线程都是在抢时间片干活的,读入的线程没抢的输出的线程不就空了么

    点赞 评论 复制链接分享
  • z116866 z116866 2017-04-01 07:46

    路过看看有什么吗发v884885

    点赞 评论 复制链接分享
  • youyao816 youyao816 2017-04-01 07:50

    Vector就是同步的 不用加锁了 我本地试了下没出现楼主说的情况 尴尬了

    点赞 评论 复制链接分享
  • qq_36373717 qq_36373717 2017-04-01 07:53

    是不是还没有写入的时候就来读取了啊。

    点赞 评论 复制链接分享
  • ljheee ljheee 2017-04-01 08:34

    使用一个线程不断读取文本数据,然后将读取的数据存入vector,
    然后启动另一个线程不断读取vector,将读到的数据发送至屏幕上,

    这不就是典型的“生产者-消费者”模型吗,设置一个缓冲区,很容易解决

    点赞 评论 复制链接分享

相关推荐