是否有可用于Elixir中FIFO队列的内置数据类型?
我查看了列表,但似乎获得列表尾部效率不高?也许我对此错了?
我的队列需要容纳100,000个或更多元素。 我需要的是,我为音频生成{t,y}形式的44100个元组。我试图实现一个延迟,所以我需要在将音频发送到处理管道之前排队几秒钟(最多可能是10个?)。
答案 0 :(得分:15)
我不确定100,000或更多元素的性能,但看起来你正在寻找documentation。它是由Erlang / OTP提供的FIFO队列。
示例:
iex(39)> queue = :queue.new
{[], []}
iex(40)> queue = :queue.in(1, queue)
{[1], []}
iex(41)> queue = :queue.in(2, queue)
{[2], [1]}
iex(42)> queue = :queue.in(3, queue)
{[3, 2], [1]}
iex(43)> :queue.out(queue)
{{:value, 1}, {[3], [2]}}
iex(44)> {{:value, head}, queue} = :queue.out(queue)
{{:value, 1}, {[3], [2]}}
iex(45)> head
1
iex(46)> {{:value, head}, queue} = :queue.out(queue)
{{:value, 2}, {[], [3]}}
iex(47)> head
2
iex(48)> {{:value, head}, queue} = :queue.out(queue)
{{:value, 3}, {[], []}}
iex(49)> head
3
iex(51)> :queue.out(queue)
{:empty, {[], []}}