理解 COM 套间
2006-07-22 22:58:03 来源:WEB开发网2、多线程存在的问题
我们首先看一段多线程程序(该程序可以在Code的MultiThreading中找到): #include <iostream>
这段程序的本意是让全局变量累次加10,并打印出操作后的数值。但我们运行程序后的结果如下,可以看到程序的运行结果非我们所愿。打印出的结果是一串乱序的文字。
#include <windows.h>
int g_i = 10; //一个全局变量
DWORD WINAPI ThreadProc(LPVOID lpv)
{
g_i += 10;
std::cout <<"In the Thread " << ::GetCurrentThreadId() << ",the first g_i is " << g_i << "!" << std::endl;
Sleep(5000); //睡眠
g_i += 10;
std::cout <<"In the Thread " << ::GetCurrentThreadId() << ",the secend g_i is " << g_i << "!" << std::endl;
return 0;
}
int main(int argc, char* argv[])
{
DWORD threadID[2];
HANDLE hThreads[2];
for(int i = 0; i <= 1; i++ ) //创建两个线程
hThreads[i] = ::CreateThread(NULL,
0,
ThreadProc,
NULL,
0,
&threadID[i]);
WaitForMultipleObjects(2,hThreads,TRUE,INFINITE); //等待线程结束
for(i = 0; i <= 1; i++ )
::CloseHandle(hThreads[i]); //关闭线程句柄
system("pause");
return 0;
}
示例程序2-多线程程序
更多精彩
赞助商链接