27.windows线程

1.windows线程

  windows线程是可以执行的代码的实例。系统以线程为单位调度程序。

  一个程序中可以有多个线程,实现多任务处理。

2.windows线程的特点

  (1)线程都有一个ID

  (2)线程具有自己的安全属性

  (3)每个线程都有自己的内存栈

  (4)每个线程都有自己的寄存器信息

3.进程多任务和线程多任务

  进程多任务:每个进程都使用私有的地址空间

  线程多任务:进程内的多个线程使用同一个地址空间

  线程调用:将CPU的执行时间划分为时间片,依次根据时间片执行不同的线程

  线程轮询:线程A -> 线程B -> 线程A ...

4.线程使用

  (1)定义线程处理函数

     DWORD  WINAPI  ThreadProc( LPVOID lpParameter );

  (2)创建线程

     HANDLE  CreateThread( LPSECURITY_ATTRIBUTES      lpThreadAttributes,  //安全属性

SIZE_T                                 dwStackSize,          //线程栈大小

LPTHREAD_START_ROUTINE   lpStartAddress,      //线程处理函数地址

LPVOID                                 lpParameter,           //传给线程处理函数的参数

DWORD                                dwCreationFlags,     //创建方式

LPDWORD                             lpThreadId);           //创建成功,返回线程ID

时间: 2025-01-02 16:41:33

27.windows线程的相关文章

windows线程池四种情形(win核心读书笔记)

windows线程池四种情形(win核心读书笔记) Mircosoft从Windows2000引入线程池API,并在Vista后对线程池重新构架,引入新的线程池API.以下所有线程池函数均适用于Vista以后的版本. 用Windows提供的线程池函数有以下几个好处:1,不必要用CreateThread创建线程:2,不必要管理自己线程:3,Windows封装好的线程池,效率高,性能优越. 1 异步方式调用函数 这种方式和我们用CreateThread创建线程的用法差不多,给定一个线程函数模板实现功

Windows线程同步

说到windows线程同步的方法,有循环锁,临界区(关键代码段),内核对象(Event,Semaphore,Mutex).甚至进程,线程handle等等. 说说用法: 临界区和mutex都可以用于控制共享资源的互斥访问,不同点是 临界区是用户级对象,消耗小,速度快,但是不能跨进程.mutex是内核对象速度慢,但是可以跨进程. semaphore可以用来进行资源控制,信号量的两个关键参数,现有资源数和最大资源数,可以用于对资源的控制,通过ReleaseSemaphore对资源增加,WaitFor*

Windows线程生灭(图文并茂)

一.线程创建 Windows线程在创建时会首先创建一个线程内核对象,它是一个较小的数据结构,操作系统通过它来管理线程.新线程可以访问进程内核对象的所有句柄.进程中的所有内存及同一进程中其它线程的栈. 创建有以下几种方式,分别说明 CreateThread(...) (操作系统提供的API,尽量不要使用) _beginthread(...) _beginthreadex(...) AfxBeginThread(...) (MFC提供的接口) 首先声明一个线程函数,原型为: DWORD FunThr

第11章 Windows线程池(1)_传统的Windows线程池

第11章 Windows线程池 11.1 传统的Windows线程池及API 11.1.1 传统的线程池对象及对应的API 线程池对象 API 普通任务线程池 QueueUserWorkItem 计时器线程池 CreateTimerQueue(创建线程池) CreateTimerQueueTimer(创建计时器) ChangeTimerQueueTimer DeleteTimerQueueTimer DeteTimerQueueEx 同步对象等待线程池 RegisterWaitForSingle

Windows线程同步总结

Windows线程同步 Windows的线程同步可以利用互斥对象来实现,也可以使用事件对象,关键代码段来实现. 1 事件对象实现线程同步 <1>Event对象创建函数 事件对象的创建事件对象属于内核对象,它包含以三个成员:使用计数,是否是自动重置还是人工重置的布尔值,通知状态的布尔值. HANDLE CreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes, BOOLbManualReset, BOOLbInitialState, LPCSTRlp

windows线程同步之原子锁(原子访问)

原子锁(原子访问):一个线程在访问某个资源的同时必须确保其他线程不会同时访问此资源. 没有实现原子锁的结果: //定义一个全局变量 long g_lx = 0; DWORD WINAPI ThreadFunc1(PVOID pvParam){ for( int index=0; index<10000; index++ ) { g_lx++: //g_lx加1: } return 0: } DWORD WINAPI ThreadFunc2(PVOID pvParam){ for( int ind

Windows线程池

本文主要是参考 博客:http://blog.csdn.net/ithzhang/article/details/8373243 以及自己的一些心得而来. 我们自己也可以创建线程,但是涉及到线程的编码操作比较复杂,容易出现差错.为了简化程序员的工作,Windows提供了一个线程池机制来简化线程的创建.销毁以及日常管理.这个新线程池可能不适用于所有的情况,但大多数情况下它都能够满足我们的需要. 这个线程池能够帮助我们做一下事情: 一:以异步的方式调用一个函数. 二:每隔一段时间调用一个函数. 三:

Windows线程同步(未完)

先介绍一个创建线程的API,参考:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682453%28v=vs.85%29.aspx Creates a thread to execute within the virtual address space of the calling process. HANDLE WINAPI CreateThread( _In_opt_ LPSECURITY_ATTRIBUTES lpThr

windows 线程同步

Windows 临界区,内核事件,互斥量,信号量. 临界区,内核事件,互斥量,信号量,都能完成线程的同步,在这里把他们各自的函数调用,结构定义,以及适用情况做一个总结. 临界区: 适用范围:它只能同步一个进程中的线程,不能跨进程同步.一般用它来做单个进程内的代码快同步,效率比较高. 相关结构:CRITICAL_SECTION  _critical 相关方法: /*初始化,最先调用的函数.没什么好说的,一般windows编程都有类似初始化的方法*/ InitializeCriticalSectio