我试图做我的功课,但我坚持使用这些线程..创建线程时,该功能被称为:线程同步,互斥
size_t* mines, gold = 0, gold_collected = 0;
pthread_mutex_t mine_mutex;
int last_mine = 0;
void* dig(void *mine_start) {
int current_worker = (int)mine_start;
int mine = (int)mine_start;
// printf("Hello, it's me, thread %d\n", current_worker);
while(gold != 0) {
if(mine > last_mine - 1) {
mine = 0;
}
pthread_mutex_lock(&mine_mutex);
if(mines[mine] != 0) {
//printf("All gold %zd\n", gold);
//printf("Gold in mine %zd with number %d\n", mines[mine], mine);
printf("Worker %d entered mine %d\n", current_worker, mine);
gold -= 10;
mines[mine] -= 10;
gold_collected += 10;
//sleep(1);
}
pthread_mutex_unlock(&mine_mutex);
++mine;
}
pthread_exit(NULL);
}
我的问题是,当我有5个矿井和2名工人,只有一名工人进入矿井挖掘金矿。我如何旋转我的线程,以便他们都可以从矿井中挖掘出来?
嗨 - 人们通常懒得点击通过另一个链接。请将相关代码复制到您的问题中。 –
好的,我会编辑我的帖子。 – user3132352
@TarynEast让我笑了起来。谁在这里真的很懒惰? :) – this