【发布时间】:2018-08-07 05:19:42
【问题描述】:
在 Haskell 中,同一个套接字可以在两个线程之间共享吗?本质上,我要做的是创建一个线程来写入套接字,另一个线程从套接字读取。
读取线程将是一个不断等待、监视和获取套接字生成的任何消息的循环。
另一个线程(写线程)将代码发送到套接字。
请指教。
【问题讨论】:
-
在 C 中是允许的,为什么在 Haskell 中不允许呢?在 Haskell 中,所有的值都是不可变的,甚至。
-
你试过什么?据我所知,这不应该有任何问题,您应该能够做一个正常的
forkIO并照常进行。 -
值得注意的是,Haskell 线程之间的通信方式比通过套接字发送消息更复杂。根据应用程序,简单地使用
par函数或使用 MVar 或软件事务内存通常会比一些可怕的手工制作的套接字协议更有效。我认为您真正想要这种基于套接字的设计的唯一情况是您尝试模拟网络协议。
标签: multithreading sockets haskell tcp