3 回答

TA贡献1712条经验 获得超3个赞
你参数是通过指针的方法送进去的?然后结果每个线程要读数据的时候数据已经不是送入时候的数据了吗
送线程参数的时候,为每个线程分配一个新的空间来保存这个“参数”。
例如你原来是
int a = 10;
_beginthreadex(0, 0, ThreadFunc, &a, 0, 0);
a = 20;
_beginthreadex(0, 0, ThreadFunc, &a, 0, 0);
现在要
int a = 10;
int *p = new int;
*p = a;
_beginthreadex(0, 0, ThreadFunc, p, 0, 0);
p = new int;
a = 20;
*p = a;
_beginthreadex(0, 0, ThreadFunc, p, 0, 0);
记住线程函数退出前要delete掉这个参数p

TA贡献1856条经验 获得超17个赞
这个方法A是否可以做到线程安全?即互不干扰执行?
否则加锁,感觉起不到并发的作用。
另外,如果这个方法的确无法做到线程安全,建议也只是临界区加锁,即存在冲突的那一段代码加锁,否则影响效率。

TA贡献2039条经验 获得超8个赞
没听懂你要怎么输出,给你创建临界区的函数:
CRITICAL_SECTION m_csList;
InitializeCriticalSection(&m_csList);
EnterCriticalSection(&m_csList);
LeaveCriticalSection(&m_csList);
DeleteCriticalSection(&m_csList);
- 3 回答
- 0 关注
- 128 浏览
添加回答
举报