我在程序中运用多线程,一个线程显示模型计算的进度,另一个线程调用模型计算。
我得模型是在VC下面用ATL封装了的。在我程序运行中我发现效果不好。好像是在进度条
显示完我得模型才开始计算。
所以我想可不可以运用多线程调用ATL?如果可以得话要注意什么问题?

解决方案 »

  1.   

    COM 组件的线程模型很重要. 如果是Apartments模型. 所有的线程对你的组件的访问会被串行化.拿你这个来讲. 你有两个线程访问计算组件,假如你的组件是Apartments的. 不管任何时候, 哪一个线程先调用了组件, 另一个线程必须等待那个线程的调用返回后才能真正通过调用进入组件. 这一切对你的线程来讲都是透明的. 你的线程不知道什么时候会被阻塞. 这样的好处是你不需要写同步的代码, 因为这个很不好写. 坏处是牺牲了并发性. 像你这样的应用, 你应该创建free thread 的组件. 这样你的线程可以同时访问组件, 但你要写同步代码控制线程的访问.