作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我将 nThreads 保持在 300 以下,则以下代码运行没有任何问题,但是如果我输入 400,例如,我会遇到段错误。我认为这与最大线程数有关,但我不确定如何允许更多线程,或者至少不确定如何确定我可以运行的最大线程数。任何想法?提前致谢
#include <stdlib.h>
#include <pthread.h>
#include <malloc.h>
#include <unistd.h>
void* thread(void* arg);
int counter=0;
pthread_mutex_t counterMutex = PTHREAD_MUTEX_INITIALIZER;
int main(){
int nThreads = 0;
printf("How many threads? ");
scanf("%d", &nThreads);
pthread_t* threads = (pthread_t*)malloc(nThreads*sizeof(pthread_t));
for(int i=0; i < nThreads; i++){
pthread_create(&threads[i], NULL, thread, (void*)&i);
}
for(int i=0; i < nThreads; i++){
pthread_join(threads[i], NULL);
}
printf("counter is %d\n\n", counter);
exit(0);
}
void* thread(void* arg){
pthread_mutex_lock(&counterMutex);
counter++;
printf("thread %d, counter is %d\n\n", *(int*)arg, counter);
pthread_mutex_unlock(&counterMutex);
pthread_exit(NULL);
}
最佳答案
您不检查 pthread_create
是成功还是失败。如果失败,您最终会使用无效的 pthread_t
调用 pthread_join
。
关于运行多个线程时出现 C pthread 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7609272/
我是一名优秀的程序员,十分优秀!