小编Shi*_*nha的帖子

如何销毁由std :: thread显式创建的线程?

我希望两个线程最初都在无限循环中运行,但是有一段时间后我想杀掉第一个线程而不等待它完成,第二个线程应该正常运行.我该如何实现它?当我运行以下代码时,它会给出调试错误!

void f1(int i)
{
    while (1)
     {
             printf("Executng Thread  %d : %d\n", i, j);
            Sleep(10);
    }

}


int main()
{   
    std::thread t1(f1, 1);  
    std::thread t2(f1, 2);

    Sleep(100);
     t1.~thread();  
    while (1)
    {

        Sleep(10);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ windows multithreading

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

多线程程序只执行最后创建的线程?

我创建了4个线程,但是当我执行这个程序时,我将其作为输出:

Thread #: 1  
Thread #: 2 
Thread #: 3 
Thread #: 3 
Thread #: 4 
Thread #: 4 
Thread #: 4
Thread #: 5 
Thread #: 5 
Thread #: 5
.
.
.
Thread #: 5 
Thread #: 5 
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 我只创建了4个线程,为什么它显示线程#:5
  2. 创建的所有4个线程应该按顺序运行,但为什么它只运行最后创建的线程?

源代码:

#include<windows.h>


HANDLE ThreadHandle[4];
DWORD dwThreadId[4];

DWORD WINAPI ThreadFunction(LPVOID param)
{

    while (1)
    {

        printf("Thread #: %d\n", *((int*)param));
    }

    Sleep(10);

    return 0;
}

int main()
{
    static int i = 0;
    for (i = 1; i <= …
Run Code Online (Sandbox Code Playgroud)

c c++ multithreading createthread

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

标签 统计

c++ ×2

multithreading ×2

c ×1

createthread ×1

windows ×1