多线程入门

HANDLE WINAPI  CreateThread(
  LPSECURITY_ATTRIBUTES  lpThreadAttributes,
  SIZE_T   dwStackSize,
  LPTHREAD_START_ROUTINE  lpStartAddress,
  LPVOID  lpParameter,
  DWORD  dwCreationFlags,
  LPDWORD  lpThreadId

);

函数说明:

第一个参数表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。

第二个参数表示线程栈空间大小。传入0表示使用默认大小(1MB)。

第三个参数表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。

第四个参数是传给线程函数的参数。

第五个参数指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。

第六个参数将返回线程的ID号,传入NULL表示不需要返回该线程ID号。

函数返回值:

成功返回新线程的句柄,失败返回NULL。

DWORDWINAPIWaitForSingleObject(
  HANDLEhHandle,
  DWORDdwMilliseconds
);

第一个参数为要等待的内核对象。

第二个参数为最长等待的时间,以毫秒为单位,如传入5000就表示5秒,传入0就立即返回,传入INFINITE表示无限等待。

因为线程的句柄在线程运行时是未触发的,线程结束运行,句柄处于触发状态。所以可以用WaitForSingleObject()来等待一个线程结束运行。

函数返回值:

在指定的时间内对象被触发,函数返回WAIT_OBJECT_0。超过最长等待时间对象仍未被触发返回WAIT_TIMEOUT。传入参数有错误将返回WAIT_FAILED

时间: 2024-09-29 23:05:24

多线程入门的相关文章

[Python]多线程入门

Python的多线程有两种实现方法: 函数,线程类 1.函数 调用thread模块中的start_new_thread()函数来创建线程,以线程函数的形式告诉线程该做什么 # -*- coding: utf-8 -*- import thread def f(name): #定义线程函数 print "this is " + name if __name__ == '__main__': thread.start_new_thread(f, ("thread1",)

java多线程入门学习(一)

java多线程入门学习(一) 一.java多线程之前 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程.     线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小.     线程和进程一样分为五个阶段:创建.就绪.运行.阻塞.终止.     多进程是指操作系统能同时运行多个任务(程序).     多线程是指在同一程序中有多个顺序流在执行. 在java中要想实现多线程,有两种手段,一种是继承T

C Linux 多线程入门

C Linux 多线程入门 ××× 入门示例 ????启动和停止直接使用接口即可,暂停和恢复需要自己定义,大体的代码如下: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <signal.h> #include <sys/time.h> struct si

(转载)Java多线程入门理解

转载出处http://blog.csdn.net/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(Java并发编程与技术内幕:线程池深入理解),或者看这个专栏:Java并发编程与技术内幕.你将会对Java里头的高并发场景下的线程有更加深刻的理解. 目录(?)[-] 一扩展javalangThread类 二实现javalan

C++面向对象多线程入门

第1节   背景 为了更好的理解多线程的概念,先对进程,线程的概念背景做一下简单介绍. 早期的计算机系统都只允许一个程序独占系统资源,一次只能执行一个程序.在大型机年代,计算能力是一种宝贵资源.对于资源拥有方来说,最好的生财之道自然是将同一资源同时租售给尽可能多的用户.最理想的情况是垄断全球计算市场.所以不难理解为何当年IBM预测“全球只要有4台计算机就够了”. 这种背景下,一个计算机能够支持多个程序并发执行的需求变得十分迫切.由此产生了进程的概念.进程在多数早期多任务操作系统中是执行工作的基本

c++标准库多线程入门

从c++ 11开始,语言核心和标准库开始引入了对多线程的原生支持.如下所示: int doSth(char c) { default_random_engine dre(c); uniform_int_distribution<int> id(10,10000); for(int i=0;i<10;i++) { this_thread::sleep_for(chrono::milliseconds(id(dre))); cout.put(c).flush(); } return c; }

java中的多线程入门

本文主要是想学习下java中多线程的东西. 一.理解多线程. 多线程是怎么样的机制?他是允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此之间相互独立. 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,有操作系统负责调度,区别在于线程诶有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单. 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”,如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速

Java多线程入门知识点梳理

前言 在多核时代,高并发时代,对系统并行处理能力有很高要求.多线程就是这个时代最好的产物.通过使用多线程可以增强系统并行处理能力,提高CPU资源的有效利用:从而提高系统的处理能力.常见应用场景如:多窗口售票.生产消费模式.异步提交信息(如日志.发送消息),只要系统需要并行任务处理的场景都可以考虑使用多线程.当然它也有缺点,线程由CPU调度.程序员无法干涉.多线程的随机性,这就会增加不可控性,得出的数据重复.错乱等现象...这篇文章是从关键点上进行整理...后续会针对相关关键点制作相关系列文章..

JAVA实现多线程入门

package com.thread;/** * 1:程序员可以在程序中执行多个线程,每一个线程完成一个功能,并于其他线程并发执行,这种 * 机制被称为多线程 * 2:实现线程的两种方法是,分别是继承java.lang.Thread或者实现java.lang.Runnable * 接口 * 3:Thread泪时java.lang包中的一个类,从这个类实例化的对象代表线程 * 4:完成线程真正功能的代码是放在run()方法中的,当一个泪继承Thread类后,就可以 * 在该类中覆盖run()方法,

Python多线程入门指南

一直懒得写Python相关的文章,恰好有天需要简单的给童鞋们讲点课,仓促之余就诞生了此文. 今天本来准备全面的聊聊有关高性能并发这个话题来着,但是周末马上要来了啊.所以我就取了其中的一点来介绍,关于其他的方面,有兴趣的小伙伴可以和我交流.谈高效并发,往往脱离不了以下三种方案: 进程:每个逻辑控制流都是一个进程,由内核来调度和维护.因为进程有独立的虚拟地址空间,想要和其他控制流通信必须依靠显示的进程间通信,即我们所说的IPC机制 线程:线程应该是我们最为熟知的.它本质是运行在一个单一进程上下文中的