CreateThread()创建一个新的线程。

ExitThread()正常的结束一个线程的执行。

CloseHandle()关闭一个线程的句柄。

CreateThread()函数原型如下:

HANDLE  WINAPI CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes,//线程安全属性,(NULL表示不能被子进程继承)

SIZE_T dwStackSize, //线程堆栈初始化大小,默认为0

LPTHREAD_START_ROUTINE lpStartAddress, //线程函数

LPVOID lpParameter,  //线程参数

DWORD dwCreationFlags,//创建方式(0:表示立即执行)

LPDWORD lpThreadId  //线程标识符(该指针存储线程创建后返回的线程标识符)

);

线程函数的格式必须:

DWORD WINAPI threadName(LPVOID lpParamter);

// lpParamter为CreateThread()传递给线程函数的参数,函数返回值为函数是否正常结束的标志。

句柄对线程对象有完全的访问权,句柄可以被子进程继承。线程句柄在其被关闭前一直是有效的,既是句柄所代表的线程已全部被终止,所以必须调用CloseHandle()显式的关闭一个句柄。

#include <iostream>
#include <windows.h> bool repeat=true; DWORD WINAPI mythread1(LPVOID lpParamter)
{
while(repeat)
{
std::cout<<"How are you?"<<std::endl;
Sleep();
}
DWORD exitCode;
ExitThread(exitCode);
return ;
} DWORD WINAPI mythread2(LPVOID lpParamter)
{
while(repeat)
{
std::cout<<"very well!"<<std::endl;
Sleep();
}
DWORD exitCode;
::ExitThread(exitCode);
return ;
} DWORD WINAPI killthread(LPVOID lpParamter)
{
repeat=false;
return ;
} int main()
{
HANDLE handle1,handle2,handle3;
DWORD dw1,dw2,dw3;
handle1=::CreateThread(NULL,,mythread1,NULL,,&dw1);
if(handle1==NULL)
{
std::cout<<"create thread1 failed!"<<std::endl;
return -;
} handle2=::CreateThread(NULL,,mythread2,NULL,,&dw2);
if(handle2==NULL)
{
std::cout<<"create thread2 failed!"<<std::endl;
return -;
} ::Sleep();
handle3=::CreateThread(NULL,,killthread,NULL,,&dw3);
if(handle3==NULL)
{
std::cout<<"create thread3 failed !"<<std::endl;
return -;
} ::CloseHandle(mythread1);
::CloseHandle(mythread2);
::CloseHandle(killthread); return ;
}

C++多线程一的更多相关文章

  1. C#夯实基础之多线程一:初识多线程

    一. 烧水沏茶问题       在小学四年级有一个烧水沏茶问题,可以作为我们今天讨论话题的引子: 客人来了,要烧一壶茶,但是烧水需要5分钟,洗水壶需要1分钟,洗茶杯需要2分钟,接水需要1分钟,找茶叶需 ...

  2. c#中的线程一

    一.使用线程的理由 1.可以使用线程将代码同其他代码隔离,提高应用程序的可靠性. 2.可以使用线程来简化编码. 3.可以使用线程来实现并发执行 二.基本知识 1.进程与线程:进程作为操作系统执行程序的 ...

  3. JAVA多线程一

    介绍 线程是操作系统的最小单位,一个进程可以创建多个线程. 线程有五种状态,分别是新建.就绪.运行.阻塞.死亡状态. 多线程可以提高执行效率,但是如果单线程可以完成的任务,使用多线程反而会增加不必要的 ...

  4. iOS 之 多线程一

    iOS中实现多线程的技术方案 pthread 实现多线程操作 代码实现: void * run(void *param) {    for (NSInteger i = 0; i < 1000; ...

  5. java学习多线程之创建多线程一

    现在我们有这么一个需求,就是在主线程在运行的同时,我们想做其他的任务,这个时候我们就用到了多线程.那么如何创建多线程,我们知道在系统当中qq的多线程创建是由操作系统来完成的,那么如果我们想在java当 ...

  6. java 线程一

    java基础学习总结--线程(一) 一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. 程只是一个静态的概念,机器上的一个. ...

  7. python并发编程之多线程一

    一,什么是线程 线程也被称为轻量进程计算机科学术语,指运行中的程序的调度单位. 线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程.线程不拥有系统资源,只有运行必须的一些数据结构: ...

  8. (三十)java多线程一

    我们通常在电脑中打开的应用称作进程,一个应用就是一个进程,而一个进程里边一般包含多个线程. 系统要为每一个进程分配独立的内存空间,而进程里的多个线程共用这些内存. 我们通常所写的main方法就是一个线 ...

  9. 深入java多线程一

    涉及到 1.线程的启动(start) 2.线程的暂停(suspend()和resume()) 3.线程的停止(interrupt与异常停止,interrupt与睡眠中停止,stop(),return) ...

随机推荐

  1. 关于js中原型链的理解

    我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,一个对象.无论什么时候,我们只要创建一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性对象 ...

  2. hdu_5776_sum(前缀和维护)

    题目链接:hdu_5776_sum 题意: 给你一串数,问你是否有一个连续的子序列的和为m的倍数 题解: 维护一个前缀和%m的值,如果前缀和%m的值为0或者有两个前缀和%m的值相同,那么就有一个连续区 ...

  3. List------Linked 链表

    1.Definition Linked list consists of a series of nodes. Each nodes contains the element and a pointe ...

  4. 初识mongo

    进入mongo /usr/local/mongodb/bin/mongo --host 查看所有db show dbs 查看当前进入的db db 查看当前db的所有collection show co ...

  5. Hadoop 中关于 map,reduce 数量设置

    map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务的分布式并行计算,从这个观点来看,如果将map和reduce的数量设置为1,那么用户的任务 ...

  6. Linux 系统监控

    *lsof 列出打开的文件 常用   lsof -i:8080*htop进程监控iotop(bugs)iptraf实时局域网IP监控psacct 监视用户活动monit Linux进程和服务监控工具* ...

  7. mongodb导出数据

    导出 -d  数据库名 -u 用户名 -p 密码 -c  要导出的表名 -o 要到出的文件地址及类型 C:\Users\Administrator>mongoexport -d fh -u we ...

  8. CDONTS组件

    在ASP中发送Email时往往需要一个COM组件支持,如果你没有第三方的Email组件,你可以使用IIS本身提供CDONTS EMail组件.这个组件使用时需要安装和启动SMTP服务.这个组件的名称为 ...

  9. addEventListener与removeEventListener

    addEventListener:添加事件监听器 element.addEventListener(event, function, useCapture) event:事件类型,字符串,不要加&qu ...

  10. 转 Oracle 12C 之 CDB/PDB用户的创建与对象管理

    在Oracle 12C中,账号分为两种,一种是公用账号,一种是本地账号(亦可理解为私有账号).共有账号是指在CDB下创建,并在全部PDB中生效的账号,另一种是在PDB中创建的账号. 针对这两种账号的测 ...