arrays - 被调用函数中线程处理中的索引
问题描述
下一个问题:
现在我有了带有全局结构的“car_park”。
struct seat {
int size;
int color;
};
struct car {
int count_of_seats;
struct seat *seats;
};
struct car_park {
int count_of_cars;
struct car *cars;
};
我读取一个文件,分配必要的内存并将其保存到结构中。
现在我想执行一个函数。此函数应作为 5 个线程执行
func(){
...
}
void main(){
struct car_park my;
pthread_t th_read[5];
read_current_cars(&my); // write data from file into struct (e.g. array of 5 cars)
while(1){
for (i= 0; i<5; i++){
pthread_create (&th_read[i], NULL, func, &my);
}
}
}
我该如何编程,第一个线程使用第一辆汽车,第二个线程使用第二辆汽车......如果我使用 struct car_park 中的变量来增加,它不起作用。该变量在第一个线程启动之前递增。
谁能帮我?
安德烈
解决方案
将所有车辆排成队列。同步队列访问(将所有队列读/写包装到互斥锁中)。让你的线程func()
从队列中拉出汽车并做任何你需要做的事情。不能保证线程 1 会得到汽车 1,但老实说,我认为这并不重要。
推荐阅读
- python - 如何使用 pandas 数据框函数在样本上维护具有条件的某些行
- vulkan - 是否有一个好的 HLSL 到 SPIR-V 编译器?
- node.js - 无法删除具有指定时间戳的消息
- node.js - 如何在此路由路径中获取此帖子参数 ID?
- spring - 支持多种日期格式的 Kafka JsonDeserializer
- sas - Sas如何在显示器中有2个byvar
- c - 与“for循环”输出混淆
- java - 如何与 bin、conf 等少数目录一起构建战争
- javascript - 无法在 Angular 中访问对象属性
- r - 在 Rscript 中使用从 ShinyApp 获取的变量