关于同步和异步

今天看到项目里的代码,功能就是服务器到某一个地方重新下载工程文件,然后删除原来的文件,新文件解压,替换原来文件。根据不同平台做了不同的处理erlang的os:type()区分开来,window的机器就是使用的erlang的函数对文件的解压、删除、拷贝做的操作,但是在unix服务器解压成功、删除原来的文件之后,使用了linux命令,调用了os_uti模块的cmd_ansync(“***”)函数。

  这样就有问题了,我们调用os_util:ansync("mv ../server_new ../")只是希望拷贝文件,然后返回了“ok”,函数返回ok的时候可能拷贝还没有完成,但是我们收到了ok这一返回值,就认为已经拷贝完成了,更新服务器文件,那么就要重启服务器了,这样就会出现问题,出现问题是乐观的情况,如果多数情况下文件拷贝完成了,这个问题就隐藏了,不知道什么时候惹出大祸。

以后自己写代码的时候一定要注意,涉及到同步、异步以及一些有严格的执行顺序的代码,一定要控制好,那怕让一个进程多等一些时间,或者等待一个返回信息。同步异步甚至都可以在函数命名中体现出来,如os_util:cmd_ansync(“***”),os_uti这些都是老板亲自写额,以后好好看看,多学习才是。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值