多线程访问Vector一个实验

// ThreadVisitSource.cpp : 定义控制台应用程序的入口点。

// For Test Once:两个线程访问共同的资源vector,这里主线程负责读取外部txt
// 文档数据,并把字符串压进Vector;从线程负责从Vector中读取数据,并把其输出到控制台上
// 实验结果:成功!可以访问共同的资源。

// For Test Twice,第二次实验,居然不行了,从线程很快就退出了~

// 每次实验的结果几乎都不相同,这就是多线程下的结果不确定性?由于
// 一个线程到另一个线程之间的切换和轮询并不是可以预料的,哪个线程什么时候结束我们也无法知道
// --异步性
// 而这里的从线程是否结束和主线程有关,如果主线程没有把串压进Vector里,那么切换到从线程的时候,很
// 容易从线程就退出了,因为vs的size为0,这时就失去了这个从线程;
// 在实验中出现了一次比较好的情况,主线程先压串,压一个从线程读一个,压一个从线程读一个,一直下去
// 到从线程读完所有的串;
// 当然这种情况不是每次都有,所以最后结论为,这样使用多线程共同的访问大小动态变化的vector并不牢靠

#include "stdafx.h"
#include "zthread/thread.h"
#include <vector>
#include <string>
#include <fstream>
using namespace std;
using namespace ZThread;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值