【发布时间】:2021-06-14 08:17:11
【问题描述】:
我正在研究哲学家就餐问题,并且我正在尝试创建一种方法来跟踪共享资源(叉子)。所以我的想法是创建一个信号量数组,这样当我不得不分叉时,我可以通过利用数组中的索引来跟踪哲学家的编号和他的叉子,该索引理想地包含资源。
所以我的问题是,这可能吗?我所做的一切都导致了错误,例如:
char ** sems[5];
sems[0] = struct sembuf a[1] = {{0, 1, 0}};
sems[1] = struct sembuf b[1]
sems[2] = struct sembuf c[1].... and so forth
然而,这显然是不正确的做法。有人可以帮我指出正确的方向吗? .
【问题讨论】:
-
char**不能存储任意的struct。 -
你是怎么做到的?您可以将结构声明为数组吗?像数组结构 smes[5]?
-
struct x[N],当然。 -
好的,那我怎样才能独立修改这些信号量呢?就像我如何为每个信号量使用 semop 命令? semop(semID, sems[3], 1);给我一个错误
-
在我看来,你是想走捷径,真的过度扩张自己。回到基础并学习如何在 C 中声明和使用数组和结构数组,然后再继续深入,这将有所帮助。
标签: c linux system ipc semaphore