我正在用C语言编写一个应用程序,它需要多个线程从一个函数请求一个唯一的事务ID,如下所示;
struct list{
int id;
struct list *next
};
function generate_id()
{
linked-list is built here to hold 10 millions
}如何在两个或多个线程之间进行同步,使它们的事务ID在它们之间是唯一的,而不使用互斥,这可能吗?
请共享任何内容,即使我需要将链表更改为其他内容。
发布于 2012-04-23 01:34:02
让我先猜猜你想做什么(如果我错了,请纠正我):
从每个线程调用函数"generate_id“,并操纵一个全局计数器为每个链表节点分配唯一的ids。
在这样做的时候,你们显然需要相互排斥。除了互斥,它还可以通过使用原子操作来实现,如“测试和测试并设置”或“比较和交换”。
https://stackoverflow.com/questions/10249727
复制相似问题