gpt4 book ai didi

c# - NetMq 套接字是线程安全的吗?

转载 作者:行者123 更新时间:2023-11-30 14:08:23 25 4
gpt4 key购买 nike

我使用私有(private)字段(PushSocket - netmq 的 zmq_push 套接字)

private PushSocket _pushSocket;

以及在不同线程中使用这个套接字的两个方法

public void Method1()
{
//.....//
_pushSocket.SendFrame(....);
//.....//
}

public void Method2()
{
//.....//
_pushSocket.SendFrame(....);
//.....//
}

我应该使用 lock 还是其他同步原语?

最佳答案

没有,

在理解ZeroMQ专业级建议No.1的基础上:
不要设计线程间共享套接字的代码。

根据设计,
ZeroMQ S可扩展F普通C通信P atterns (又名 socket(s))
不是线程安全的 (并且从未尝试过是)

这不是相信一个人有能力以某种方式调解线程间信号,而是一个主要信念,即良好的可扩展并行代码应该永远不会共享,也不会阻塞

如是说ZeroMQ布道。

困惑? np.
生气的? np.
零共享零锁定 -- 尝试将其视为某种形式的碰撞避免,而不是从烧焦的鞭打中筛出 Ember 不受控制的并发破坏。


如有疑问

最好的选择是阅读 Pieter HINTJENS 的书“Code Connected. Volume 1”,并花一些时间了解 Pieters 关于可扩展代码设计原则的观点。

您很快就会爱上 ZeroMQ 的新思维方式。

关于c# - NetMq 套接字是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35245387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com