这是一个简单的例子,麻烦给讲一下流程#include <windows.h>
#include <iostream.h>DWORD WINAPI ThreadProc(LPVOID lpParam);int index=0;
void main()
{
HANDLE hThread;
hThread=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
CloseHandle(hThread);
while (index<1000)
{
cout<<"main thread is runing"<<endl;
}
//Sleep(5);
}DWORD WINAPI ThreadProc(LPVOID lpParam)
{
while(index<1000)
{
cout<<"Thread1 is runing"<<endl;
index++;
//Sleep(5);
}
return 0;
}
#include <iostream.h>DWORD WINAPI ThreadProc(LPVOID lpParam);int index=0;
void main()
{
HANDLE hThread;
hThread=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
CloseHandle(hThread);
while (index<1000)
{
cout<<"main thread is runing"<<endl;
}
//Sleep(5);
}DWORD WINAPI ThreadProc(LPVOID lpParam)
{
while(index<1000)
{
cout<<"Thread1 is runing"<<endl;
index++;
//Sleep(5);
}
return 0;
}
Thread1 is runing
main thread is runing
main thread is runing
main thread is runing
Thread1 is runing
main thread is runing
main thread is runing
大致就这个样子, 主线程(main)和子线程(ThreadProc),谁抢到CUP时间片,谁就运行。打印出来的东西也就杂乱无须
=====================
因为你没有做同步处理,所以CreateThread之后,主线程和子线程到底什么时候执行哪个是随机的,完全由系统的线程调试程序控制,所以没有流程可言。
有什么问题啊?
=============
Sleep一般是不会出错的吧
Thanks!
貌似是cout有关的什么overflow了
Thread1 is runing, i =947
Thread1 is runing, i =948
Thread1 is runing, i =949
Thread1 is runing, i =950
Thread1 is runing, i =951
Thread1 is runing, i =952
Thread1 is runing, i =953
Thread1 is runing, i =954
Thread1 is runing, i =955
Thread1 is runing, i =956
Thread1 is runing, i =957
Thread1 is runing, i =958
Thread1 is runing, i =959
Thread1 is runing, i =960
Thread1 is runing, i =961
Thread1 is runing, i =962
Thread1 is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
main thread is runing, i =963
Thread1 is runing, i =964
Thread1 is runing, i =965
Thread1 is runing, i =966
Thread1 is runing, i =967
Thread1 is runing, i =968
Thread1 is runing, i =969
Thread1 is runing, i =970
Thread1 is runing, i =971
Thread1 is runing, i =972
Thread1 is runing, i =973
Thread1 is runing, i =974
Thread1 is runing, i =975
Thread1 is runing, i =976
Thread1 is runing, i =977
Thread1 is runing, i =978
Thread1 is runing, i =979
Thread1 is runing, i =980
Thread1 is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
main thread is runing, i =981
Thread1 is runing, i =982
Thread1 is runing, i =983
Thread1 is runing, i =984
Thread1 is runing, i =985
Thread1 is runing, i =986
Thread1 is runing, i =987
Thread1 is runing, i =988
Thread1 is runing, i =989
Thread1 is runing, i =990
Thread1 is runing, i =991
Thread1 is runing, i =992
Thread1 is runing, i =993
Thread1 is runing, i =994
Thread1 is runing, i =995
Thread1 is runing, i =996
Thread1 is runing, i =997
Thread1 is runing, i =998
Thread1 is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
main thread is runing, i =999
{
while(index<1000)
{
cout<<"Thread1 is runing"<<endl;
index++;
//Sleep(5);
}
return 0;
}
如果不加Sleep会不会有问题呀?我觉得这样执行线程会不会跑太快了?至少加个Sleep(0)吧?
但是如果你可以加上EVENT同步的话,你可以很清晰的看到你想要的运行结果还有啊,你加上Sleep也并不好用,那样子执行的速度降慢了
Sleep(0)是交出时间片好吧?让CPU有切换的机会
汗