多线程特性 ·Win32线程和COM线程 marshaling和同步 套间线程 自由线程 进程内组件的线程模型
多线程特性 • Win32线程和COM线程 • marshaling和同步 • 套间线程 • 自由线程 • 进程内组件的线程模型
进程和线程 进程 在 Linux平台上,时间和空间概念的结合 在 Windows平台上,是个空间概念 线程 在 Linux平台上,一个执行环境 在 Windows平台上,也是一个调度单元,是 个时间概念
进程和线程 • 进程 – 在Linux平台上,时间和空间概念的结合 – 在Windows平台上,是个空间概念 • 线程 – 在Linux平台上,一个执行环境 – 在Windows平台上,也是一个调度单元,是 个时间概念
Win32线程 ·Win32系统线程本身只有一种,根据 应用模型可分为两种 Create Thread,创建线程 U线程( user-interface thread) 包含消息队列,当线程首次调用Win32 User或GD函数时产生 常常包含消息循环,组合 GetMessage TranslateMessage/DispatchMessage 辅助线程( worker thread) 一条执行线索,没有UI,没有消息概念
Win32线程 • Win32系统线程本身只有一种,根据 应用模型可分为两种 • CreateThread,创建线程 • UI线程(user-interface thread) – 包含消息队列,当线程首次调用Win32 User或GDI函数时产生 – 常常包含消息循环,组合GetMessage/ TranslateMessage/DispatchMessage • 辅助线程(worker thread) – 一条执行线索,没有UI,没有消息概念
COM线程 按照COM对象的执行环境,分为套间 线程和自由线程 套间线程( apartment thread 位于一个STA中(Sige- Threaded Apartment 个套间对应一个线程 自由线程( free thread 位于MTA中Mui- Threaded apartment) 个进程有一个MTA,它可以包含任意 数量的自由线程
COM线程 • 按照COM对象的执行环境,分为套间 线程和自由线程 • 套间线程(apartment thread) – 位于一个STA中(Single-Threaded Apartment) – 一个套间对应一个线程 • 自由线程(free thread) – 位于MTA中(Multi-Threaded Apartment) – 一个进程有一个MTA,它可以包含任意 数量的自由线程
marshaling 调用者与被调用者如果位于不同的线程 中,则调用过程要有两次线程切换,线 程切换也需要用到 marshaling机制 ·COM对象的线程相依性 有的COM对象只能在一个线程中运 内含U的COM对象只能在创建线程上运行 线程之间的 marshaling机制与进程间的 marshaling过程致
marshaling • 调用者与被调用者如果位于不同的线程 中,则调用过程要有两次线程切换,线 程切换也需要用到marshaling机制 • COM对象的线程相依性 – 有的COM对象只能在一个线程中运行 – 内含UI的COM对象只能在创建线程上运行 • 线程之间的marshaling机制与进程间的 marshaling过程一致