【发布时间】:2014-04-19 13:47:15
【问题描述】:
在> Chapter 14 Programming with sockets 一书中,
Joe 给了我们两个版本的 receive_data(Socket, SoFar):
receive_data(Socket, SoFar) ->
receive
{tcp,Socket,Bin} ->
receive_data(Socket, [Bin|SoFar]);
{tcp_closed,Socket} ->
list_to_binary(reverse(SoFar))
end
和
receive_data(Socket, SoFar) ->
receive
{tcp,Socket,Bin} ->
receive_data(Socket, list_to_binary([SoFar,Bin]));
{tcp_closed,Socket} ->
SoFar
end.
然后乔说:
在后一个版本中,我们不断将新的二进制文件附加到 缓冲区的末尾,这涉及到大量的数据复制。
但我仍然不太清楚 [Bin|SoFar] 和 list_to_binary([SoFar,Bin]) 之间的区别。
Joe 所说的“大量数据复制”是什么意思?
list_to_binary 还是 [SoFar, Bin] 哪个函数会处理大量数据?
【问题讨论】: