我正在用 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/