- 5
- 0
- 约4.43千字
- 约 5页
- 2017-11-20 发布于北京
- 举报
C多线程编程简单实例
C++多线程编程简单实例
?(2012-05-18 16:26:01)
HYPERLINK javascript:; 转载▼
标签:?
HYPERLINK /?c=blogq=itby=tag \t _blank itC++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下:
?
创建线程的函数
HANDLE CreateThread(?
????LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
????SIZE_T dwStackSize, ??????????????????????// initial stack size
????LPTHREAD_START_ROUTINE lpStartAddress, ???// thread function
????LPVOID lpParameter, ??????????????????????// thread argument
????DWORD dwCreationFlags, ???????????????????// creation option
????LPDWORD lpThreadId ???????????????????????// thread identifier
);
在这里我们只用到了第三个和第四个参数,第三个参数传递了一个函数的地址,也是我们要指定的新的线程,第四个参数是传给新线程的参数指针。
eg1:
?
#include iostream
#include windows.h
using namespace std;
?
DWORD WINAPI Fun(LPVOID lpParamter)
{
??????while(1) { coutFun display!endl; }
}
?
int main()
{
????HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL);
????CloseHandle(hThread);
????while(1) { coutmain display!endl; ?}
????return 0;
}
?
我们可以看到主线程(main函数)和我们自己的线程(Fun函数)是随机地交替执行的,但是两个线程输出太快,使我们很难看清楚,我们可以使用函数
VOID Sleep(
????DWORD dwMilliseconds ??// sleep time
);
来暂停线程的执行,dwMilliseconds表示千分之一秒,所以
Sleep(1000);
表示暂停1秒
?
eg2:
??
#include iostream
#include windows.h
using namespace std;
?
DWORD WINAPI Fun(LPVOID lpParamter)
{????
??????while(1) { coutFun display!endl; Sleep(1000);}
}
?
int main()
{
??????HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL);
??????CloseHandle(hThread);
??????while(1) { coutmain display!endl; ?Sleep(2000);}
??????return 0;
}
执行上述代码,这次我们可以清楚地看到在屏幕???交错地输出Fun display!和main display!,我们发现这两个函数确实是并发运行的,细心的读者可能会发现我们的程序是每当Fun函数和main函数输出内容后就会输出换行,但是我们看到的确是有的时候程序输出换行了,有的时候确没有输出换行,甚至有的时候是输出两个换行。这是怎么回事?下面我们把程序改一下看看:
eg3:
??
#include iostream
#include windows.h
using namespace std;
?
DWORD WINAPI Fun(LPVOID lpParamter)
{
??????while(1) { coutFun display!\n; Sleep(1000);}
}
?
int main()
{
??????HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL);
??????CloseHandle(hThread);
??????while(1) { coutmain disp
原创力文档

文档评论(0)