我有一个脚本,使用quicklisp加载zs3以访问亚马逊的S3。
当我使用clisp运行脚本时,运行(zs3:bucket-exists-p "Test")
时,会发生USOCKET:TIMEOUT-ERROR。
但是,当我用sbcl运行它时,它运行正常。
他们是否以不同方式访问usocket?
各自的优点和缺点是什么?
答案 0 :(得分:1)
usocket是一个兼容层,它隐藏了每个Lisp实现的底层套接字API。在某些情况下肯定存在阻抗不匹配,但在大多数情况下它应该起作用。
我怀疑zs3经常不和CLISP一起使用(或者根本不用!),你会看到结果。另一方面,人们通常可以期望库在SBCL下经过充分测试,因为这是最受欢迎的实现。
另请注意,线程在CLISP中仍然是实验性的;默认情况下不启用它们。套接字通常与线程混合的事实只会减少CLISP + usocket的相对使用。