com的几个小问题
com的几个问题
(1)
异步com
回调和异步其实没有关系的。
但是comz中的事件有了 异步这个概念,我觉得,异步必然有非用户创建的线程存在(即:线程不是我们创建的,
com本身已经帮你创建了), 所以才有异步这个概念。
异步和回调没有必然关系,同步也可以回调。
(2)com中的套间 与线程
套间的出现是为了解决多线程中调用com防止 race condition的出现。
当然写代码的时候,完全可以不用套间,比如我们自己加锁来解决。
似乎com为了方便程序员使用,提出套间这个概念来,既解决了race condition,又解决了使用方便的问题。
(3)com事件的概念
传统的win32编程,事件的概念无非是 某个消息产生了,然后一些列动作产生。这个叫事件,请对比:点击一个按钮
后, 某事件产生。 来理解事件这个概念。
但是com 事件却是很诡异。 到底是什么事件? 谁产生?
有人说是com产生的。 win32中的按钮点击,产生的一个事件,是同步?异步? 同步! 但是com的事件呢?同步?异步?
似乎是异步。
------解决方案--------------------
是的, 异步框架看起来没涉及到线程, 所接触的都是使用线程实现的,
.net 中 Async 系列同样也是,
win32 多线程程序设计
windows 并发程序设计指南
也都是这么说的.
com 事件未必都是异步的,
要看具体的某个事件是不是.
你比如说 mshtml,
在程序创建组件之前, 只有最少的2个线程,
一旦创建, 线程马上变得好多.
------解决方案--------------------
------解决方案--------------------
事件跟同步异步没啥关系,全取决于组件实现者的做法。事件既可以是同步的,也可以是异步的。异步事件也并不一定用线程来实现,单线程一样可以实现异步事件。
(1)
异步com
回调和异步其实没有关系的。
但是comz中的事件有了 异步这个概念,我觉得,异步必然有非用户创建的线程存在(即:线程不是我们创建的,
com本身已经帮你创建了), 所以才有异步这个概念。
异步和回调没有必然关系,同步也可以回调。
(2)com中的套间 与线程
套间的出现是为了解决多线程中调用com防止 race condition的出现。
当然写代码的时候,完全可以不用套间,比如我们自己加锁来解决。
似乎com为了方便程序员使用,提出套间这个概念来,既解决了race condition,又解决了使用方便的问题。
(3)com事件的概念
传统的win32编程,事件的概念无非是 某个消息产生了,然后一些列动作产生。这个叫事件,请对比:点击一个按钮
后, 某事件产生。 来理解事件这个概念。
但是com 事件却是很诡异。 到底是什么事件? 谁产生?
有人说是com产生的。 win32中的按钮点击,产生的一个事件,是同步?异步? 同步! 但是com的事件呢?同步?异步?
似乎是异步。
------解决方案--------------------
是的, 异步框架看起来没涉及到线程, 所接触的都是使用线程实现的,
.net 中 Async 系列同样也是,
win32 多线程程序设计
windows 并发程序设计指南
也都是这么说的.
com 事件未必都是异步的,
要看具体的某个事件是不是.
你比如说 mshtml,
在程序创建组件之前, 只有最少的2个线程,
一旦创建, 线程马上变得好多.
------解决方案--------------------
------解决方案--------------------
事件跟同步异步没啥关系,全取决于组件实现者的做法。事件既可以是同步的,也可以是异步的。异步事件也并不一定用线程来实现,单线程一样可以实现异步事件。