CPlus的简单线程的制作
2015-09-03 18:27
330 查看
1、线程需要用到<widnows.h>
2、利用句柄创建并执行线程:
HANDLE hThread = CreateThread(NULL, 0, Fun, &tp, 0, NULL);
CloseHandle(hThread);
注意:线程的函数必须是以DWORD WINAPI functionName(LPVOID lpParamter)的形式声明
3、完整代码如下:
2、利用句柄创建并执行线程:
HANDLE hThread = CreateThread(NULL, 0, Fun, &tp, 0, NULL);
CloseHandle(hThread);
注意:线程的函数必须是以DWORD WINAPI functionName(LPVOID lpParamter)的形式声明
3、完整代码如下:
#include <iostream> #include <windows.h> using namespace std; int i=0; struct threadParams { char* name; int age; }; DWORD WINAPI Fun(LPVOID lpParamter) { threadParams *sp = (threadParams*)lpParamter; cout<<"Have been started: "<<i++<<" secend(s)!\n"; cout<<"name = "<<sp->name<<endl; cout<<"age = "<<sp->age<<endl; return 0; } /* HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes DWORD dwStackSize, // initial thread stack size LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function LPVOID lpParameter, // argument for new thread DWORD dwCreationFlags, // creation flags LPDWORD lpThreadId // pointer to receive thread ID ); 第一个参数是指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,它被设为NULL。 第二个参数是用于新线程的初始堆栈大小,默认值为0。在任何情况下,Windows根据需要动态延长堆栈的大小。 第三个参数是指向线程函数的指标。函数名称没有限制,但是必须以下列形式声明: DWORD WINAPI ThreadProc (PVOID pParam) ; 第四个参数为传递给ThreadProc的参数。这样主线程和从属线程就可以共享数据。 第五个参数通常为0,但当建立的线程不马上执行时为旗标CREATE_SUSPENDED。线程将暂停直到呼叫ResumeThread来恢复线程的执行为止。 第六个参数是一个指标,指向接受执行绪ID值的变量。 */ DWORD WINAPI inputAPI(LPVOID lp){ char* s=NULL; cin>>s; if(s=="s"){ exit(0); } } int main() { threadParams tp; tp.name = "tom"; tp.age = 20; char* s = NULL; while(TRUE) { if(i==20) { cout<<"You have successed!Congratunations!"<<endl; break; } HANDLE hThread = CreateThread(NULL, 0, Fun, &tp, 0, NULL); CloseHandle(hThread); if(i==18) { cout<<"Closing the thread!"<<endl; TerminateThread(hThread,0);//close a thread system("pause"); } HANDLE INThread = CreateThread(NULL,0,inputAPI,NULL,0,NULL); CloseHandle(INThread); Sleep(1000); } //Sleep(1); //while(1) { cout<<"main display!\n"; Sleep(2000);} return 1; }
相关文章推荐
- 扩展欧几里得算法
- C++基础---string类的operator==/operator!=/operator</operator<=/operator>/operator>=/compare
- GCJ 2008 Round1AA
- 组合数C(n,m)的计算
- C++函数中那些不可以被声明为虚函数的函数
- 2012-2013 ACM-ICPC, NEERC, Central Subregional Contest H Milestones1 (暴力)
- 框架模式MVP在Android中的使用
- 对加权(无负值边)的图进行最短路径搜索
- Win10系统“获取会员版本”选项不可用怎么办?“获取会员版本”选项不可用的解决方法
- C++基础---string类的operator=/assign
- myeclipse2014配置spring
- C语言中链表怎么删除结点?
- C语言中链表怎么删除结点?
- C++基础---string类的operator<</operator>>/getline
- android切割音视频
- Windows平台下搭建Git服务器
- 修改Mac系统自带Vim配色方案
- 在Closing事件中,将e.Cancle设置成true,则Windows无法关机和重启系统的解决办法
- 20款响应式bootstrap后台模板源码下载
- POJ 1364 - King(差分约束)