让进程外COM实现多实例

目标就是实现每创建一个COM实例,就开启一个进程。

通过调用RegisterClassObjects方法实现。ATL默认的实现中参数设置为REGCLS_MULTIPLEUSE,改为REGCLS_SINGLEUSE就可以了。

HRESULT PreMessageLoop(int /*nShowCmd*/) throw()
{
HRESULT hr = S_OK;
T* pT = static_cast<T*>(this);
pT;


hr = pT->RegisterClassObjects(CLSCTX_LOCAL_SERVER, 
REGCLS_SINGLEUSE/*REGCLS_MULTIPLEUSE*/);
if (hr == S_OK)
{
if (m_bDelayShutdown && !pT->StartMonitor())
{
hr = E_FAIL;
}
}
else
{
m_bDelayShutdown = false;
}


ATLASSERT(SUCCEEDED(hr));
return hr;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一门支持多进程和多线程的编程语言,通过多进程和多线程,程序可以充分利用系统资源,提高程序处理效率,实现更加复杂的并发操作。 在python中,可以使用multiprocessing库实现进程,也可以使用threading库实现多线程。下面,我们来看一下具体的代码实例。 多进程实现: ```python import multiprocessing def worker(num): print('Worker %d is running...' % num) if __name__ == '__main__': for num in range(5): p = multiprocessing.Process(target=worker, args=(num,)) p.start() ``` 在上面的代码中,我们定义一个worker函数和主函数。主函数创建5个进程,每个进程都调用worker函数。通过multiprocessing库的Process类创建进程,target参数传入worker函数,args参数传入函数所需的参数。 多线程实现: ```python import threading def worker(num): print('Worker %d is running...' % num) if __name__ == '__main__': for num in range(5): t = threading.Thread(target=worker, args=(num,)) t.start() ``` 在上面的代码中,我们同样定义了一个worker函数和主函数。主函数创建5个线程,每个线程都调用worker函数。通过threading库的Thread类创建线程,target参数传入worker函数,args参数传入函数所需的参数。 需要注意的是,多进程和多线程的实现方式略有不同。在多进程中,由于每个进程独立占用一部分系统资源,需要使用if __name__ == '__main__':来判断是否是主进程。而在多线程中,由于所有线程共享同一进程内的资源,没有这个问题。 以上就是python实现进程和多线程的代码实例。需要根据具体场景来选择使用哪种方法实现并发操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值