我正在尝试设计一个线程安全代码,该代码具有静态结构数组作为多个线程使用的资源。
这是结构的样子
typedef struct resource{
int used;
int fd;
char *filename;
}resource;
static resource resource_list[20] = {0};
线程将在其生命周期内使用resource_list中的一个结构,并在完成后释放它。
我轮询用于决定某个人是否正在使用struct的值(如果resource_list [i] .used == 1 //正在使用)。
但是我想以线程试图获取对resource_list [i]成员的锁定的方式来设计它,如果它失败,它会转移到下一个成员,意识到第i个成员正在使用而不等待它。
我应该使用互斥列表,每个数组元素对应一个吗?如果线程无法获取该互斥锁,如何确保线程进入下一个元素?