【发布时间】:2021-09-14 13:19:41
【问题描述】:
我想要一个线程化的while 循环,该循环永远递增i。为什么会过早停止?
#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
void *increment () {
int i = 0;
while (1) {
i++;
printf("Number: %d", i);
}
}
int main (int argc, char **argv) {
if (argc <= 1) {
fprintf(stderr, "Invalid params\n");
exit(-1);
}
int num_threads = atoi(argv[1]);
pthread_t thread[num_threads];
for (int i = 0; i < num_threads; i++) {
pthread_create(&thread[i], NULL, &increment, argv[1]);
}
return 0;
}
【问题讨论】:
-
您需要等待线程完成,然后再从 main 返回。查看
pthread_join -
另外,您的函数
increment未正确声明。应该是void *increment(void *arg);你没有收到编译器警告吗? -
扩展@MFisherKDX 的评论:退出或终止进程应该终止所有正在运行的线程。
-
increment缺少return NULL。 -
@MFisherKDX 感谢您的帮助,我设法让它工作。抱歉我的回复晚了