首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >传递pthread_mutex_t到函数

传递pthread_mutex_t到函数
EN

Stack Overflow用户
提问于 2012-12-25 19:44:49
回答 2查看 1.1K关注 0票数 0

把线程锁传递给函数可以吗?我之所以要求这样做,是因为我有很多线程,比如10,充当使用者,和2个生产者,每个使用者线程都有自己的链接列表(缓冲器),生产者会根据特定的规则将数据发送到这些线程中的一个,所以有时候生产者1发送给消费者1,然后再发送给消费者2,然后返回到消费者1等等。

所以我在想这个,

当生产者1想发送给消费者5,

  1. 生产者1调用函数链接-列表来共享数据(IPC)并将lock5传递给这个函数,在这种情况下,它将是锁5。
  2. 函数链接列表将锁定lock5并更新链接列表。
  3. 当使用者5调用函数链接列表时,它将传递它的锁(consumer5总是使用lock5),如果生产者已经锁定了这个锁,那么它将等待。

请注意,锁的名称在main()中共享。

代码语言:javascript
运行
复制
pthread_mutex_t lock[10];

我在linux上使用gcc,如果问题不清楚,请告诉我,因为我有一种糟糕的描述方式。

EN

回答 2

Stack Overflow用户

发布于 2012-12-25 20:02:54

你可以的。一定要传递互斥对象的地址。你不能复制它。

票数 0
EN

Stack Overflow用户

发布于 2012-12-25 21:38:24

你可以好好想想。创建另一个c文件并插入:

代码语言:javascript
运行
复制
pthread_mutex_t lock[10];
type_t *produce(int tid) {

if (tid == {producer_1}) {
    //call function linked-list to share the data (IPC) and pass lock[5] to this function, in this case it will be lock 5
}
...
}

void consume(type_t* data, int tid) {
....
}

通过这种方式,您可以集中处理程序,使程序更加可读性和简单性。在您的线程中,只需使用生产者/使用者ids应用produceconsume

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14033521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档