2 u012499057 u012499057 于 2016.01.22 14:18 提问

vector,多线程的C问题

我需要用createthread将vector的里的数据输出,求各位帮个忙吧

6个回答

caozhy
caozhy   Ds   Rxr 2016.01.22 14:22

看你怎么输出,理论上,你一个线程输出就够了,干嘛多线程。非要多线程,那么在迭代vector的时候同步下

http://www.jb51.net/article/56041.htm

u012499057
u012499057 具体情况在下面,我觉得应该是问号处写错了
2 年多之前 回复
caozhy
caozhy 回复szkjxylm: 你怎么同步的
2 年多之前 回复
u012499057
u012499057 单个线程只输出vector的一个数据,在多线程传值的时候出现了乱码!可是我已经注意同步了啊!所以我想要个例子
2 年多之前 回复
u012499057
u012499057   2016.01.22 14:34

![图片说明](https://img-ask.csdn.net/upload/201601/22/1453444439_807127.png)图片说明

u012499057
u012499057   2016.01.22 14:34

请问两个问号处怎么填?第二个问号处我是要输出传下来的值

u012499057
u012499057   2016.01.22 14:37

图片说明

caozhy
caozhy 你可以传i,这样线程可以知道自己是第几个线程
2 年多之前 回复
John_ToStr
John_ToStr   Rxr 2016.01.23 10:09

http://www.cnblogs.com/BeyondTechnology/archive/2010/08/30/1813082.html
第四个参数为传递给ThreadProc的参数。这样主线程和从属线程就可以共享数据。、
但是不想传的话,一般给传个NULL就可以。

func7
func7   2016.01.23 13:58

CreateThread那个地方填(void*)p
后面线程函数
DWORD __stdcall ThreadFunc(void* p)
{
vector& vec = (vector)p;
//…
}

func7
func7 回复mk256: 为什么显示内容跟我发的不一样![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/17.gif)用手机发的 vector<string>& vec=*(vector<string>*)p;
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
vector配合多线程的bug
今日加利福尼亚大学同学来访问,写的程序core了,帮忙调试好半天。。纪录一下奇葩的bug。 起始bug的原因挺容易想到的,而且也是写代码的时候应该注意的地方。应为vector内存动态增长的原因,vector中的元素的指针和引用都是不可靠的。当然这一点在单线程时基本没有问题。但是多线程就跪了。 多线程传给线程函数一个vector中元素的指针,而主线程会改这个vector,导致线程函数需要用vec
多线程Vector读写控制
最近在做毕设的时候遇到了一个Vector的Iterator意外失效的问题,分析下来,是因为使用了多线程,在对一个成员变量进行读写操作的时候没有加锁导致的,下面有一个编写的简单的例子来说明这个问题。 本例子中使用了ACE_Task(主动对象:ACE中的一种模式,将线程封装在对象中) 问题代码: #pragma once #pragma comment(lib,"ACE
多线程下读写vector变量
考虑到一个线程用于去读数据库,一次性插入多条数据到共享数据区,另外搞2个上的线程去读这个共享数据区,以后打算搞个线程池来处理读部分。 目下的问题是我想把这个共享数据区做成可变化的动态区,当读入数据大时,一次读入全部读完。当数据量小时,则在规范范围的空间中运行。 采用vector方式动态变化,比如要删除超过长度之外的设置,只需要earse就可以了,在线程中每次通过begin,end自动扫描处理中
多线程Vector
#include #include #include #include #include using namespace std; template class container { public:     void add(T element)//有添加单个元素的add()方法     {         _lock.lock();         _ele
[C/C++标准库]_[初级]_[std::vector的多线程读写问题]
场景: 1. 有时候需要使用vector 或 map作为多线程的共享变量, map是tree结构, 读和写方法都不是线程安全的, 即同时读写会有崩溃的现象. 2. std::vector直观来说只用push_back和[] 下标访问操作应该没问题,push_back往后边加对象, 索引值只访问已经存储的变量(预先求size).注意, 这里不会删除vector元素. 可惜,这种多线程操作还是会崩溃.
多线程下vector的安全问题
STL文档说了——vector它不支持多线程,利用以下的代码亲测,   如果是仅仅读取vector中的数据,或者是改变元素的值 多线程没有问题。如果是添加或删除元素,则多线程肯定出问题,需要自己同步。#include &amp;lt;windows.h&amp;gt; #include &amp;lt;process.h&amp;gt; #include &amp;lt;vector&amp;gt; using namespace std; ...
多线程使用Vector或HashTable
Vector是ArrayList的多线程版本,HashTable是HashMap的多线程版本,这些概念我 们都很清楚,也被前辈嘱咐过很多次,但我们经常会逃避使用Vector和HashTable,因为用 得少,不熟嘛!只有在真正需要的时候才会想要使用它们,但问题是什么时候算真正需要呢?我们来看一个例子,看看使用线程安全的Vector是否可以解决问题,代码如下: //火车票列表 final
Java_多线程_多线程使用Vector或HashTable
Vector是ArrayList的多线程版本,HashTable是HashMap的多线程版本,这些概念我们都很清楚,也被前辈嘱咐过很多次,但我们经常会逃避使用Vector和HashTable,因为用得少,不熟嘛!只有在真正需要的时候才会想要使用它们,但问题是什么时候算真正需要呢?我们来看一个例子,看看使用线程安全的Vector是否可以解决问题,代码如下:package deep;import jav
java Vector 在多线程使用中需要注意的问题
众所周知,Java中有一些被称为是线程安全的集合容器,但是这里的线程安全会让人误以为在多线程环境中去使用这些容器就可以放心使用,包打天下。但是事实上并不是如此,在多线程中使用这些类仍然会存在问题。这就让人迷茫了,明明是线程安全的,为什么还会出错呢。我的理解是,明明是线程安全的,但是这些集合并不一定能在多线程环境中不出问题。 先看一段测试代码:public class VectorTest { pri
关于vector的vector<vector<int>>的使用问题
最近写了一题需要使用矩阵来存储树结构,元素只有10W个,但是需要开10W*10W的矩阵来表示关系,明显是开不下的,这里vector>是一个不错的选择,但是在使用的时候回发生一些问题:vector subscript out of range,如下图 这里我是直接定义使用,就报错了 vector>g; g[2][1]=10; 其实这是vector 对象g[i] 没有分配空间.你不能这