gpt4 book ai didi

c - 如何在不使用互斥量的情况下在多个线程之间进行同步,以便它们的事务 ID 是唯一的?

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:45 25 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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

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

在这样做时,您显然需要互斥。除了互斥之外,它还可以通过使用诸如“test-and-test-and-set”或“compare-and-swap”之类的原子操作来实现。

关于c - 如何在不使用互斥量的情况下在多个线程之间进行同步,以便它们的事务 ID 是唯一的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10249727/

25 4 0