zoukankan      html  css  js  c++  java
  • 《Windows核心编程》——线程

    • 组成:线程内核对象+线程栈
    • 多线程应用程序:
      • 通常情况下,一个应用程序拥有一个用户界面线程,用于创建所有窗口,并且有一个GetMessage循环。
      • 进程中的所有其他线程都是工作线程,它们与计算机或 I/O相关联,但是这些线程从不创建窗口。
      • 一个用户界面线程通常拥有比工作线程更高的优先级,因此用户界面负责向用户作出响应。
    • 线程函数:
      • 主线程的进入点函数的名字必须是main、wmain、WinMain或wWinMain。
      • 与这些函数不同的是,线程函数可以使用任何名字。
      • 由于给你的主线程的进入点函数传递了字符串参数,因此可以使用ANSI/Unicode版本的进入点函数:main/wmain和WinMain/wWinMain。
      • 可以给线程函数传递单个参数,参数的含义由你而不是由操作系统来定义。因此,不必担心ANSI/Unicode问题。
    • CreateThread函数:
       1 typedef DWORD (WINAPI *LPTHREAD_START_ROUTINE)(LPVOID pvarg);
       2 
       3 HANDLE CreateThread(
       4    LPSECURITY_ATTRIBUTES lpsa, 
       5    DWORD cbStack, //线程栈大小,WinCE默认64K
       6    LPTHREAD_START_ROUTINE lpStartAddr, //入口点函数
       7    LPVOID lpvThreadParam, 
       8    DWORD fdwCreate, 
       9    LPDWORD lpIDThread
      10  );
    • 终止线程:
      •  线程函数返回(最好使用这种方法)。
      •  通过调用ExitThread函数,线程将自行撤消(最好不要使用这种方法)。
      •  同一个进程或另一个进程中的线程调用TerminateThread函数(应该避免使用这种方法)。
      •  包含线程的进程终止运行(应该避免使用这种方法)。
  • 相关阅读:
    UVALive 7141 BombX
    CodeForces 722D Generating Sets
    CodeForces 722C Destroying Array
    CodeForces 721D Maxim and Array
    CodeForces 721C Journey
    CodeForces 415D Mashmokh and ACM
    CodeForces 718C Sasha and Array
    CodeForces 635C XOR Equation
    CodeForces 631D Messenger
    田忌赛马问题
  • 原文地址:https://www.cnblogs.com/dahai/p/2819092.html
Copyright © 2011-2022 走看看