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. Asp.net中,点击GridView表头实现数据的排序

    一.实现该功能的基本工作. 1.  先添加一个GridView,取名为gvData. 2.  设置该控件的属性: 操作步骤如下 设置属性: 这4个属性,还要设置该控件AllowSorting=&quo ...

  2. simHash 简介以及java实现

    http://gemantic.iteye.com/blog/1701101 simHash 简介以及java实现 博客分类: 算法 simHash java 去重  传统的hash 算法只负责将原始 ...

  3. OpenCV成长之路:图像滤波

    http://ronny.blog.51cto.com/8801997/1394138 OpenCV成长之路:图像滤波 2014-04-11 14:28:44 标签:opencv 边缘检测 sobel ...

  4. hdu_4734_F(x)(数位DP水)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 题意:给你一个F(x)的定义,然后给你a,b,问你在0到b包括b有多少个数满足F(x)<= ...

  5. poj 2533 Longest Ordered Subsequence(LIS)

    Description A numeric sequence of ai is ordered ifa1 <a2 < ... < aN. Let the subsequence of ...

  6. 公司用中会用到的iOS开源库和第三方组件(不断更新...)

    分享一些目前我个人接触到的一些第三方组件和开源的库, 感谢开源, 减少了我们的开发成本, 节约了我们大量的时间, 让我们有更多的时间和精力专注做我们自己的产品.总有没有接触过的 , 总有你会用到的 , ...

  7. java 集合中将元素倒序排列

    方法一:实现Comparable接口排序package collsort.comparable; package com.cvicse.sort.comparable; public class Ca ...

  8. python--windows下安装BeautifulSoup

    python有很多内置的模块可以不安装使用,用起来非常方便,但是也有一些挺有用的非内置的模块不能直接使用,需要话费点力气手动安装. 进入python安装目录下的Scripts目录,查看是否有pip工具 ...

  9. code.google.com

    https://github.com/couchbase/sync_gateway/issues/492 This list shows the current base import paths, ...

  10. Windsock套接字I/O模型学习 --- 第二章

    1. select模型 select模型主要借助于apiselect来实现,所以先介绍一下select函数 int select( int nfds, // 忽略,仅是为了与 Berkeley 套接字 ...