c++里的线程相关创建
来源:互联网 发布:ukcn中介怎么样 知乎 编辑:程序博客网 时间:2024/06/16 11:51
#include <iostream>
#include <windows.h>
using namespace std;
DWORD WINAPI ThreadFunc(LPVOID lpParameter) //C++里面线程的创建,前面为返回值类型 LPVOID为输入类型
{
int i = (int)lpParameter;
while(i--)
{
cout << "打印倒数第" << i << "次." << endl;
if(i == 89)
{
ExitThread(); //退出线程
}
}
return 1;
}
int main()
{
DWORD threadfd;
HANDLE thread;
thread = CreateThread(NULL, 0, ThreadFunc,(LPVOID)5, 0, &threadfd); //第二空位分配堆栈,0则1MB 第三个既是线程运行的函数 (LPVOID)强制类型转换,不写会报错
if (thread == false) //第四个量CREATE_SUSPENDED,则是创建及挂起,等待ResumeThread 第五个是新线程的ID
{
cout << "线程创建失败." << endl;
}
ResumeThread(thread); //取消挂起
Sleep(5000);
SuspendThread(thread); //挂起,与上面的CREATE_SUSPENDED等效果
Sleep(5000);
ResumeThread(thread);
Sleep(5000);
SuspendThread(thread);
Sleep(5000);
ResumeThread(thread);
do{
GetExitCodeThread(thread, &threadfd2); //检测线程是否结束,根据返回值判断
} while (threadfd2 == STILL_ACTIVE);
//sleep(20);
DWORD ret;
ret = WaitForSingleObject(thread, INFINITE); //等待线程,在规定时间内 此处INFINITE为无线等待
if (ret == WAIT_FAILED)
{
cout << "等待失败." << endl;
}
else if (ret == WAIT_OBJECT_0)
{
cout << "等待成功." << endl;
}
else if (ret == WAIT_TIMEOUT)
{
cout << "等待超时." << endl;
}
return 0;
}
#include <windows.h>
using namespace std;
DWORD WINAPI ThreadFunc(LPVOID lpParameter) //C++里面线程的创建,前面为返回值类型 LPVOID为输入类型
{
int i = (int)lpParameter;
while(i--)
{
cout << "打印倒数第" << i << "次." << endl;
if(i == 89)
{
ExitThread(); //退出线程
}
}
return 1;
}
int main()
{
DWORD threadfd;
HANDLE thread;
thread = CreateThread(NULL, 0, ThreadFunc,(LPVOID)5, 0, &threadfd); //第二空位分配堆栈,0则1MB 第三个既是线程运行的函数 (LPVOID)强制类型转换,不写会报错
if (thread == false) //第四个量CREATE_SUSPENDED,则是创建及挂起,等待ResumeThread 第五个是新线程的ID
{
cout << "线程创建失败." << endl;
}
ResumeThread(thread); //取消挂起
Sleep(5000);
SuspendThread(thread); //挂起,与上面的CREATE_SUSPENDED等效果
Sleep(5000);
ResumeThread(thread);
Sleep(5000);
SuspendThread(thread);
Sleep(5000);
ResumeThread(thread);
do{
GetExitCodeThread(thread, &threadfd2); //检测线程是否结束,根据返回值判断
} while (threadfd2 == STILL_ACTIVE);
//sleep(20);
DWORD ret;
ret = WaitForSingleObject(thread, INFINITE); //等待线程,在规定时间内 此处INFINITE为无线等待
if (ret == WAIT_FAILED)
{
cout << "等待失败." << endl;
}
else if (ret == WAIT_OBJECT_0)
{
cout << "等待成功." << endl;
}
else if (ret == WAIT_TIMEOUT)
{
cout << "等待超时." << endl;
}
return 0;
}
阅读全文
0 0
- c++里的线程相关创建
- C 线程的创建
- 线程的创建方式及相关知识
- tomcat里的servlet就是线程相关的问题!
- 创建远线程相关
- 【C语言】【unix c】线程的创建
- c#--线程相关技术
- 用C创建新线程的源码
- C创建新线程的源码
- Linux C线程的创建和使用
- Android NDK c创建新的线程
- Linux C线程的创建和使用
- Linux C线程的创建和使用
- Android NDK c创建新的线程
- 线程池的创建 完整c代码
- 线程相关的单例模式(C\C++)
- Handler(原理)创建一个与线程相关的Handler
- C#,往线程里传参数的方法总结
- 实现一个菜单的简单的动画效果
- yum命令
- windows核心编程之DLL注入例子分析
- Impala 3、Impala、Hbase整合
- 装饰器模式
- c++里的线程相关创建
- 单机Redis的安装以及基本操作简介
- Impala 4、Impala JDBC
- poj 1065 Wooden Sticks
- 事件分发和滑动冲突知识点总结
- POJ 1185 炮兵阵地(状压DP)
- Python —— 深拷贝 VS 浅拷贝
- Impala 5、Impala 性能优化
- JAVA环境的配置与安装