线程

1.创建: HANDLE CreateThread(
                PSECURITY_ATTRIBUTES psa,    
                DWORD cbStackSize,
                PTHREAD_START_ROUTINE pfnStartAddr,
                PVOID pvParam,
                DWORD dwCreateFlags,   //是否立即调度,0是
                PDWORD pdwThreadID);        //线程id. NULL 即可
2.退出线程: _endthread()ExitThread(退出码)    强制结束线程  TerminateThread(句柄, 退出码)   .调用函数退出不会清理内存和对象,最好是自动返回退出
3.  冻结与解冻线程:  SuspendThread(句柄); ResumeThread(句柄); 返回挂起计数
4.  打开线程然后操作它: Open(打开干什么?, 继承方式FALSE, 线程id)
5. 线程切换: SwitchToThread()
6. 获取线程运行时间: BOOL GetThreadTimes(
HANDLE hThread,  线程句柄
PFILETIME pftCreationTime,
PFILETIME pftExitTime,
PFILETIME pftKernelTime,
PFILETIME pftUserTime);
7.线程上下文CONTEXT结构

8.    优先级         
9.关联性
10.原子操作  InterlockedIncrement() 之类的函数, 实现线程安全,速度比互斥量,临界区等快, 最大承受64个线程
11.临界区  CRITICAL_SECTION cs; 删除临界区: DeleteCriticalSection(&cs); 进入临界区和退出临界区: EnterCriticalSection(&cs); LeaveCriticalSection(&cs); 必须初始化临界区: InitializeCriticalSection(&cs);临界区接受的线程最多64个
12 锁创建:SRWLOCK sl;初始化:InitializeSRWLock(&sl);获得锁:  AcquireSRWLockExclusive(&sl); 写锁定释放锁: ReleaseSRWLockExclusive(&sl);
获得锁: AcquireSRWLockShared(&sl); 读锁定
13   等待单个线程: WaitForSingleObject(hd[i], INFINITE);  多个阻塞线程,等待线程: WaitForMultipleObjects(4, hd, 1, INFINITE); 参数: 线程个数,线程数组名, true, 等待时间,此为直到退出.返回值: WAIT_OBJECT_0:WAIT_TIMEOUT:WAIT_FAILED:
14  事件:  通过事件进行线程通信   创建事件. CreateEvent  设置事件: SetEvent(事件句柄) 触发 然后通过WaitForSingleObject函数进行等待,set后这个才不等待了ResetEvent()计时器 : CreateWaitableTimer() 创建失败返回NULl .  LARGE_INTEGER 结构体类型. 成员QuadPart=-x0000000 x秒. 设置定时器SetWaitableTimer() 传入Timer和结构体. 然后调用waitfor… 那个函数 详解BOOL SetWaitableTimer(
HANDLE hTimer,    //定时器句柄
         const LARGE_INTEGER *pDueTime,     //第一次触发的时间后.
LONG lPeriod,                //触发后以什么频率触发
PTIMERAPCROUTINE pfnCompletionRoutine,  //回调函数
PVOID pvArgToCompletionRoutine,  //参数
         BOOL bResume);   //false
和SleepEx(INFINITE, TRUE) 配合. 使主线程休眠, 时间对象唤醒.
15信号量: 创建: CreateSemaphore(NULL, 0, MAX, id);  创建后没有可用的信号,需要释放.释放信号: ReleaseSemaphore(hsem, MAX, 0);  .关闭信号量: CloseHandle(hsem);.等待信号量: WaitForSingleObject(mysem, INFINITE)==WAIT_OBJECT_0 
17  互斥量  创建: CreateMutex(NULL, FALSE, NULL)  不自动释放  .最大承受线程数:64. 创建失败返回NULL释放: ReleaseMutex(mutex); 关闭: CloseHandle(mutex);
原文地址:https://www.cnblogs.com/freesec/p/6516873.html