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函数(应该避免使用这种方法)。
      •  包含线程的进程终止运行(应该避免使用这种方法)。
  • 相关阅读:
    Java的内存结构(Memory Structure)和垃圾收集(Garbage Collection)图解
    走遍天下的三大vb控制结构
    程序员快速阅读,绝对不是神话
    Android4.0.3源码分析——开机流程之Zygote
    云端的天使
    提高班的“伞”
    Android 4.0.3 源代码结构分析(一)
    如何在Java中选择Map/List/Set
    关于Hadoop中reducer端combiner的一些思考
    vb添加GIF动态图片
  • 原文地址:https://www.cnblogs.com/dahai/p/2819092.html
Copyright © 2011-2022 走看看