问题标签 [apartments]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
204 浏览

delphi - 如何让控制台应用程序的主线程成为 MTA?

使用 Delphi,如何创建一个 (Windows) 控制台应用程序,其主线程初始化为COINIT_MULTITHREADED

如果我CoInitializeEx(nil, COINIT_MULTITHREADED)在第一条语句中调用,我会得到一个 HRESULT 0x80010106(设置后无法更改线程模式),所以很明显一些以前运行的代码已经调用了CoInitialize/Ex.

我怎样才能得到主线程COINIT_MULTITHREADED

0 投票
0 回答
45 浏览

multithreading - 什么是 COM 线程单元?

我用 pywin32 注册了一个 COM 对象。

我理解公寓是一些将线程和对象保持在一起的概念框架?

公寓的意义何在?

引用 Mark Hammond 关于 pywin32 的书:

每个对象都存在于 COM 所称的线程单元中,其中有两种类型,自由线程和单线程。一个进程可以有零个或一个自由线程单元和任意数量的单线程单元(每个线程一个单线程对象)。

我假设该对象是指我注册的东西。线程呢,它们是调用初始化此对象的应用程序吗?

0 投票
1 回答
53 浏览

c++ - 使用 c++11在 Windows 上使用 COM 线程单元 - 提示、技巧、陷阱?

我正在开发一个使用多个 USB 声音接口和 ASIO 驱动程序的 Windows 应用程序。每个驱动程序都公开了一个进程内 COM 服务器,并且必须使用单线程单元运行。

我的计划是在它自己的 STA 中运行每一个,负责处理回调和控制设备,而繁重的工作是从多线程单元完成的,它使用处理器内核可以提供的许多硬件线程,并使用任何线程和未来的标头可以提供使代码易于管理。

我想知道的是,标准 C++ 多线程实现(尤其是 Visual Studio)是否能很好地满足 COM 多线程要求(我仍在研究——公寓之间的编组仍然是个谜)?或者我是否会通过设计某种框架来包装适当的 Windows 平台 API 调用而减少摩擦?