1

我正在用 C 编写一个应用程序,它需要多个线程从函数请求唯一的事务 ID,如下所示;

struct list{
  int id;
  struct list *next
};

function generate_id()
{
  linked-list is built here to hold 10 millions 
}

如何在两个或多个线程之间同步,以便它们的事务 ID 在它们之间是唯一的,而不使用互斥锁,这可能吗?

即使我需要将链接列表更改为其他内容,也请分享任何内容。

4

1 回答 1

0

让我先猜猜你想做什么(如果我错了,请纠正我):

从每个线程调用函数“generate_id”并操作全局计数器为每个链表节点分配唯一的 ID。

在这样做时,您显然需要相互排斥。除了互斥之外,它还可以通过使用“测试和测试和设置”或“比较和交换”等原子操作来实现。

于 2012-04-22T17:34:01.960 回答