Processes and Threads

开宗明义,讲了一些慨念:

  • 一个应用有一至多个进程,一个进程有一至多个线程
    • process是一个执行中的程序
    • thread是操作系统分配处理时间的基本单位
  • 一个作业标物(job object)允许把一组进程看成整体对待
    • 可以设置名字,安全控制,和共享资源
  • 一个线程池是工作线程的合集,用于执行异步调用
    • 这样应用不用产生过多线程,而是可以依赖线程池
  • 一个纤程是一个需要应用自身来调度的执行单元
    • 在调度它的线程上下文运行
  • UMS(用户态调度)是轻量机制,应用可以用来调度它们的线程。
    • 和纤程不同,UMS线程有自己的线程上下文

What’s New in Processes and Threads

64位的Win7和Server2008 R2支持超过64个逻辑处理器。引入UMS。

About Processes and Threads

……

Using Processes and Threads

Creating a Child Process with Redirected Input and Output

使用无名管道来连结上下级进程。

创建管道的时候需要通过SECURITY_ATTRIBUTES指定各控把的继承性。 通过STARTUPINFO指定下级进程的标准输入和输出。 上级进程通过SetHandleInformation来关停某些控把的继承性。

关于继承性,

  • 首先通过SECURITY_ATTRIBUTES 指定读写控把可以继承
  • 然后通过SetHandleInformation关掉不需要继承的
  • 最好在CreateProcess的时候要把控把继承设为亍值

其他

  • 如果使用C/C++的话,可以使用CRT的_beginthread, _beginthreadex来创建线程,而不是CreateThread。或者直接使用C++的std::thread。