相关疑难解决方法(0)

Google Chrome如何在单个应用程序中将标签隔离到单独的进程中?

我们被告知Google Chrome会在单独的流程中运行每个标签.因此,一个选项卡中的崩溃不会导致其他选项卡出现问题.

AFAIK,多进程主要用于没有GUI的程序.我从来没有读过任何可以将多个GUI流程嵌入到单个GUI流程中的技术.

Chrome是如何做到的?

我问这个问题是因为我正在设计CCTV软件,它将使用来自多个相机制造商的视频解码SDK,其中一些远非稳定.所以我更喜欢在不同的流程中运行这些SDK,我认为这与Chrome类似.

browser architecture google-chrome multiprocess

38
推荐指数
2
解决办法
1万
查看次数

你如何处理挂断电话的线程?

我有一个线程,并尝试建立连接.在线程中,我打电话给第三方库.有时,此调用会挂起,并且永远不会返回.在UI线程上,我希望能够通过中止线程来取消连接尝试,该线程应该中止对第三方库的挂起调用.

我已经调用了Thread.Abort,但现在已经读过Thread.Abort仅在控件返回托管代码时才有效.我观察到这是真的,因为线程永远不会中止,我现在已经坐在Thread.Join上十分钟了.我该怎么办这个挂线程?我应该将引用置空并继续吗?我想尽可能干净 -

.net c# asp.net multithreading

8
推荐指数
2
解决办法
3958
查看次数

如何正确终止dll中的挂线?

大家好,

我有一个包含错误的第三方库.当我调用一个函数时,它可能会挂起.库函数在dll中调用.我决定将调用移到线程中等待一段时间.如果线程已完成,则确定.如果没有 - 我应该终止它是强制性的.

这里简化的例子:

unsigned Counter = 0;
void f()
{
    HANDLE hThread;
    unsigned threadID;

    // Create the second thread.
    hThread = (HANDLE)_beginthreadex( NULL, 0, DoSomething, NULL, 0, &threadID );

    if (WAIT_TIMEOUT == WaitForSingleObject( hThread, 5000 ))
    {
        TerminateThread(hThread, 1);    
        wcout << L"Process is Timed Out";
    }
    else
    {
        wcout << L"Process is Ended OK";
    }

    CloseHandle(hThread);   

    wcout << Counter;
}

unsigned int _stdcall DoSomething( void * /*dummy*/ )
{
    while (1)
    {

        ++Counter;

    }
    _endthreadex( 0 );
    return …
Run Code Online (Sandbox Code Playgroud)

c++ windows dll multithreading

3
推荐指数
1
解决办法
3544
查看次数