我想运行 4 个不同的线程调用相同的方法,并且我想确保每次运行都来自不同的运行线程。
使用下面提供的代码,方法函数运行了预期的次数,但它总是由同一个线程完成(打印的值不会改变)。
我应该在代码中更改什么以确保这种情况?(这将导致此示例打印 4 个不同的值)
编辑:相同的代码,但包括一个结构来查看解决方案将如何
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
struct object{
int id;
};
void * function(void * data){
printf("Im thread number %i\n", data->id);
pthread_exit(NULL);
}
int main(int argc, char ** argv){
int i;
int error;
int status;
int number_threads = 4;
pthread_t thread[number_threads];
struct object info;
for (i = 0; i < number_threads; ++i){
info.id = i;
error = pthread_create(&thread[i], NULL, function, &info);
if(error){return (-1);}
}
for(i = 0; i < number_threads; i++) {
error = pthread_join(thread[i], (void **)&status);
if(error){return (-1);}
}
}