相关疑难解决方法(0)

如何在C++ 11中终止线程?

我不需要正确终止线程,或使其响应"终止"命令.我有兴趣使用纯C++ 11强制终止线程.

c++ multithreading c++11

121
推荐指数
5
解决办法
16万
查看次数

在连接线程上调用 pthread_cancel 会导致 Linux 下的段错误

以下代码在第一次调用 pthread_cancel 时以分段错误结束,但仅限在 Linux 下。Mac OS 下运行良好。我是否不允许在已完成运行的线程上调用 pthread_cancel ?也许我根本不应该调用 pthread_cancel ?

#include <iostream>
#include <pthread.h>

using namespace std;


void* run(void *args) {
   cerr << "Hallo, Running" << endl;
}   

int main() {
    int n = 100;
    pthread_t* pool = new pthread_t[n];

    for(int i=0;i<n;i++) {
        pthread_t tmp;
        pthread_create(&tmp,NULL,&run,NULL);
        pool[i] = (tmp);
    }

    for(int i=0;i<n;i++) {
        pthread_join(pool[i],0);
    }

    for(int i=0;i<n;i++) {
        pthread_cancel(pool[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ pthreads

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

pthread_cancel()是否可能终止另一个意外线程?

我的问题与类似。但是在查看了所有答案之后,我仍然不知道pthread_cancel()可以提供什么样的安全保证。所以我想问一个更具体的问题:

假设在名为my_thread的pthread_t变量上调用了pthread_cancel(),那么有可能在执行pthread_cancel(my_thread)时,已经以某种方式终止了与my_thread对应的实际线程,并且内核将my_thread的值回收用于另一个新创建的线程,例如通过执行pthread_cancel(my_thread),另一个意外线程被杀死了?

c posix pthreads

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

标签 统计

c++ ×2

pthreads ×2

c ×1

c++11 ×1

multithreading ×1

posix ×1