#include <windows.h>
#include <iostream.h> DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
); void main()
{
HANDLE hThread1;
hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread1);
cout < <"main thread is runing" < <endl; }
DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
cout < <"thread1 is running" < <endl;
return 0;
} 第一次运行结果
有时为:
main thread is runing
main thread is runing
thread1 is running 而有时为:
main thread is runing
#include <iostream.h> DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
); void main()
{
HANDLE hThread1;
hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread1);
cout < <"main thread is runing" < <endl; }
DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
cout < <"thread1 is running" < <endl;
return 0;
} 第一次运行结果
有时为:
main thread is runing
main thread is runing
thread1 is running 而有时为:
main thread is runing
解决方案 »
- 推荐一个UBB插件给大家(顺便散分)
- 关于TAB切换的俩个小问题
- 使用CDHtmlDialog访问某网站有时会弹出提示对话框后自动登出,但用ie程序就不会,两者有何不同?
- 请教大家:用RAID卡(磁盘阵列)做数据采集,读写数据用什么函数效率比较高?
- 用SendMessage WM_KEYDOWN不用输入shift键???
- Xtreme Toolkit的CommandBarsDesigner怎么用?
- 分虽少,不过每个人的意见都是对我最大支持~
- 基于COM的DLL的程序的运行步骤是怎样的?
- 如何设置listview的 复选框,如何得到复选框的状态
- 这个小程序怎样实现??
- CEditEx是自定义类,继承CEdit。把控件CEdit改为CEditEx,当UpdateData()后,CEditEx的GetWindowText获取不到值。
- 使用CString初始化ifstream流的做法
1、执行main中的cout语句,然后切换到新的线程,即第一种情况
2、执行main中的cout语句,然后main函数退出,主线程结束,即第2种情况
#include <windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
); void main()
{
HANDLE hThread1;
hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
WaitForSingleObject(hThread1, INFINITE);//等结束。 CloseHandle(hThread1); cout <<"main thread is runing" <<endl;
system("pause");
}
DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
cout <<"thread1 is running" <<endl;
return 0;
}
这样就好了。控制一下 线程执行流程。逻辑很重要~加油~
main thread is runing
main thread is runing
thread1 is running
main thread is runing 可以输出两次呢?
main thread is runing
thread1 is running
main thread is runing
thread1 is running
“C/C++”—“Code Generation”里面,把“Use run-time library”设置为“…… Multithreaded
这种设置是什么意思??
但是。像你说的 连续打印两次 main thread is runing 。根据我的经验,那是不可能的。因为第一次执行打印 main thread is runing 后,紧接着就是endl ,endl已经刷新输出缓冲区。也就是说 缓冲区内 已经没有数据了。并且此代码中并不存在 任何循环,能够再次执行 cout < <"main thread is runing" < <endl; 语句。那么cpu接下来 就会执行 线程hThread1 。打印thread1 is running 。执行结束后 主线程 结束 即进程结束。
但是 事实就是事实,为什么会 连续两次 打印 main thread is runing 。原因还有待研究。
明白了。
原来是VC6.0 搞的鬼。我在这问个问题,我在网上下了代码,在VC6.0 能跑,而且跑的很好,在2005 就报了一堆错误。这是为什么呢?
6.0 和 2005 区别主要在那呢?还有,线程起始很好入门,但是想 用好就不容易了。lz 加油~