C语言中的Go风格通道

C语言中的Go风格通道,c,multithreading,go,signal-processing,C,Multithreading,Go,Signal Processing,对于C语言的实时DSP程序,我需要类似Go风格的通道来在线程之间进行通信: 一个线程将令牌推送到通道上 另一个线程从通道中提取令牌 通道有一个缓冲区 在我的例子中,令牌的内存占用很小(数字的小向量) 我想知道使用好的旧流是不是一个好主意。如果没有,是否有一个好的实践和/或库来获得尽可能接近的通道?您所描述的是线程安全队列 Apache项目已经完成 除此之外,很多用户实际上已经共享了他们的pthread队列实现,假设这就是您正在使用的。我不熟悉Go通道,但从您的描述来看,我认为您应该看看zer

对于C语言的实时DSP程序,我需要类似Go风格的通道来在线程之间进行通信:

  • 一个线程将令牌推送到通道上
  • 另一个线程从通道中提取令牌
  • 通道有一个缓冲区
  • 在我的例子中,令牌的内存占用很小(数字的小向量)

我想知道使用好的旧流是不是一个好主意。如果没有,是否有一个好的实践和/或库来获得尽可能接近的通道?

您所描述的是线程安全队列

Apache项目已经完成


除此之外,很多用户实际上已经共享了他们的
pthread
队列实现,假设这就是您正在使用的。

我不熟悉Go通道,但从您的描述来看,我认为您应该看看zeromq inproc sockets@dkrikun实际上在我的例子中,所有内容都保留在一个进程内(出于效率考虑,我认为这些通道必须使用共享内存)。因此消息队列解决方案可能“太多了”。zeromq具有inproc套接字类型,它使用进程内存,没有tcp,甚至进程间共享内存。@dkrikun zeromq in proc正是我需要的。谢谢!如果有更轻量级的解决方案,请这么说(因为我不需要90%的zeromq),那就太好了。你可以使用一个同步的spmc fifo和一个sempahore来唤醒另一个线程。请参阅,以获得许多很棒的并发原语。