c++中多线程问题

donnychou 2009-03-19 11:21:37
for(int i = 0; i < 10; i++)
{
hThread[i] = CreateThread(...);
CloseHandle(hThread[i]);
}
.....

这样做为什么报错? 报访问内存错误.

但是,
for(int i = 0; i < 10; i++)
{
hThread[i] = CreateThread(...);
}
for(int j = 0; j < 10; j++)
{
CloseHandle(hThread[j]);
}
是可以的,为什么呢~~~?
...全文
146 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
houzui 2009-03-19
  • 打赏
  • 举报
回复
学习
tnswy 2009-03-19
  • 打赏
  • 举报
回复
关键看你线程里面做了什么,你软件退出的时候,线程是不是还在运行,线程是否安全的退出等。
jn989 2009-03-19
  • 打赏
  • 举报
回复

for(int i = 0; i < 10; i++)
{
hThread[i] = CreateThread(...);
CloseHandle(hThread[i]);
}

这里代码不仅仅是这个吧?lz是不是为了叙述问题简化了一些代码啊?如2l所说是不是线程间有联系啊
  • 打赏
  • 举报
回复
你这几个线程之间有没用联系?有联系的化,可能导致第一个出错。
healer_kx 2009-03-19
  • 打赏
  • 举报
回复
表示怀疑。。。我以为不会出问题。
firsthym 2009-03-19
  • 打赏
  • 举报
回复
创建完线程,先验证吧
ASSERT(!hThread[i]);

[Quote=引用楼主 donnychou 的帖子:]
for(int i = 0; i < 10; i++)
{
hThread[i] = CreateThread(...);
CloseHandle(hThread[i]);
}
.....

这样做为什么报错? 报访问内存错误.

但是,
for(int i = 0; i < 10; i++)
{
hThread[i] = CreateThread(...);
}
for(int j = 0; j < 10; j++)
{
CloseHandle(hThread[j]);
}
是可以的,为什么呢~~~?
[/Quote]
mm350670610 2009-03-19
  • 打赏
  • 举报
回复
这是我根据楼主的叙述写的一个测试代码:

#include <windows.h>
#include <iostream.h>

DWORD WINAPI ThreadFunc(LPVOID pParam);
void print();

CRITICAL_SECTION lock;

void main()
{
InitializeCriticalSection(&lock);
HANDLE hThread[10];

for(int i = 0;i < 10;i++)
{
hThread[i] = CreateThread(NULL,0,ThreadFunc,NULL,0,NULL);
CloseHandle(hThread[i]);
}
DeleteCriticalSection(&lock);
}

void print()
{
EnterCriticalSection(&lock);
int count = 100;
cout << --count << endl;
LeaveCriticalSection(&lock);
}

DWORD WINAPI ThreadFunc(LPVOID pParam)
{
print();
return 0;
}


运行没有问题啊
donnychou 2009-03-19
  • 打赏
  • 举报
回复
我所有的线程都调用了一个函数
例如:
uint func(...)
{
// ...省略同步代码
int count = 100;
cout<<--count<<endl;
}



xghuzd 2009-03-19
  • 打赏
  • 举报
回复
把线程函数贴出来看看,
psistorm 2009-03-19
  • 打赏
  • 举报
回复
两段代码都有问题,第二段好像没有问题,只是因为问题更不容易呈现出来而已
因为你在没有保证线程退出的情况下关闭了其句柄,正常来说,应该利用一些event来保证被创建的线程和创建它的线程可以同步
xtting_8984313 2009-03-19
  • 打赏
  • 举报
回复
这一段本身没有问题.
  • 打赏
  • 举报
回复
没问题,试过了

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧