我的应用程序结构如下:核心部分是用C++编写的,大量使用线程,我在目标C上开发UI,如果我不执行线程,它可以很好地工作,但是我不能禁用、停止线程,UI在我可以看到的日志中随机崩溃,下面是消息
__NSAutoreleaseNoPool(): Object 0x350270 of class NSCFString autoreleased with no pool in place - just leaking
类似的消息不止一次出现,通过谷歌搜索了解到,我需要设置NSAutoReleasePool来消除它,但是如何能够将相同的消息与C++代码集成。
编辑:核心库将从UI中激活,因此我认为,可以
我使用IXMLHTTPRequest2/IXMLHTTPRequest2Callback接口发送HTTP请求并处理响应。在与发送请求的线程不同的线程上调用,有时在发送请求的同一线程上调用回调,如下面的调用堆栈所示:
my.dll!xxxXMLHTTPRequest2Callback::OnHeadersAvailable(IXMLHTTPRequest2 * pXHR, unsigned long dwStatus, const wchar_t * pwszStatus) Line 185 C++
msxml6.dll!URLMONRequest::_CallOnHeadersAvailabl
我正在用C++编写一个服务器,它由一个接受传入请求的主线程组成,然后派生一个新的std::thread对象来处理响应它的任务。
这个std::thread对象进入一个线程列表,我想定期清理这个列表,如下所示:
For each thread in the list:
If the thread has finished executing:
Call join on the thread
Remove the thread object from the list
现在的挑战是如何确定这个线程(正在执行void函数)是否已经结束。joinable()函数不起作用,因为它在执