小编Zac*_*ary的帖子

在发布配置上使用多线程的Visual Studio C++运行时问题

当我使用配置设置为release(对于x86和x64)进行编译时,我的程序无法完成.为了澄清,没有构建错误或执行错误.

在寻找问题的原因和解决方案之后,我发现程序只会崩溃作为发布版本 - 如何调试?这提出它是一个数组问题.虽然这解决了我的问题,但它给了我一些关于此事的见解(我将这里留给下一个人).

为了进一步混淆,只有当主线程上的子程序的执行时间大于约0ms时才会出现问题.

以下是相关的代码部分:

//  Startup Progress Bar Thread
nPC_Current = 0; // global int
nPC_Max = nPC; // global int (max value nPC_Current will reach)

DWORD myThreadID;
HANDLE progressBarHandle = CreateThread(0, 0, printProgress, &nPC_Current, 0, &myThreadID);

/* Do stuff and time how long it takes (this is what increments nPC_Current) */

//  Wait for Progress Bar Thread to Terminate
WaitForSingleObject(progressBarHandle, INFINITE);
Run Code Online (Sandbox Code Playgroud)

我的程序卡在上面的违规行是最后一个语句,程序等待创建的线程终止:

WaitForSingleObject(progressBarHandle, INFINITE);
Run Code Online (Sandbox Code Playgroud)

以下是进度条功能的代码:

DWORD WINAPI printProgress(LPVOID lpParameter)
{   
    int lastProgressPercent = -1;   // …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading visual-studio-2015

0
推荐指数
1
解决办法
101
查看次数

标签 统计

c++ ×1

multithreading ×1

visual-studio-2015 ×1