《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函数(应该避免使用这种方法)。
    •  包含线程的进程终止运行(应该避免使用这种方法)。

你可能感兴趣的:(windows)