创建不同数量的线程

different number of thread is created

我正在学习 pthread,我正在使用 vs 代码来 运行 c 代码。 根据 vs 代码文档,我安装了 MSY2S2 MSY 并且它已安装。

当我 运行 此代码时:

#include <stdio.h>
#include<stdlib.h>
#include <pthread.h>

void *bin_finding(void *p){
  int* ptr = (int*)p;
  printf("%d", *ptr);
  // printf("%s", "hello");
}


int main(){
  int data_count = 10;
  int num_of_thread = 4;
  int equalDivisionCount = data_count/num_of_thread;
  int excessCount = data_count%num_of_thread;
  int indexCount[num_of_thread];

  int i;
  pthread_t tid[num_of_thread];
  for(i=0; i<4; i++){
    indexCount[i] = i;
    pthread_create(&tid[i], NULL, bin_finding, &indexCount[i]);
 }
    return 0;
}

当我点击 运行 并在最左边的选项中进行调试时,每次都会给出不同的结果。

有时我得到 0 有时01 有时 0123

所以几乎每个 运行 都不一样,最常见的是 0。

如果有人,请帮助我。

您的程序在所有执行线程有机会完成之前退出。

在第一个循环之后使用第二个循环,包含对 pthread_join 的调用以等待每个线程完全执行:

for (int i = 0; i < num_of_thread; i++)
    pthread_join(tid[i], NULL);