nodejs整天吹异步,我只想问,需要同步的场景怎么办?
nodejs吧
全部回复
仅看楼主
level 5
sikele2236
楼主
异步就意味着和并发一样,有需要锁资源的时候,nodejs还有多进程组件,就更加是并发了,更需要同步了。
2015年01月20日 03点01分
1
level 12
yuu2lee4
用fibjs吧 最近用上了爽爽的
2015年01月21日 02点01分
2
level 10
andyhan
不需要锁
2015年01月24日 04点01分
3
sikele2236
不锁不行的,业务太复杂,都是读出来做处理然后再存回去,期间异步好几次,立马就并发问题了。
2015年01月24日 04点01分
andyhan
回复 sikele2236 :异步是靠底层的event queue的polling实现的。这个是用c实现的,这个机制可以保证线程的安全,而且node本来就是单线程的。至于多个进程的问题。我不太清楚,但是我觉得应该进程之间访问同一个资源应该是被操作系统保护的吧。写个我觉得不用担心吧
2015年01月24日 04点01分
sikele2236
@andyhan
异步之间会插入别的代码执行,也就是只要不是绝对顺序的执行,就会有业务并发问题
2015年01月24日 04点01分
andyhan
回复 sikele2236 :那是你逻辑问题了。和线程安全无关。这种时候就使用async这个组件呗。很好用的。但是我还是喜欢用promise
2015年01月24日 11点01分
level 1
ayouny
把读和写分开。读可以异步,写同步。如果还涉及到计算,应该 把计算也单独分离出来。让一个服务器只负责读,一个只负责写,一个只负责计算。当然如果你得应用规模比较小,这样的分离就显得多余了。既然应用比较小,又何必非要用nodejs呢,多花点钱把服务器性能堆高,php一样可以解决问题。
2015年02月02日 01点02分
4
level 2
yw3501406
Promise 啊
2015年02月02日 18点02分
5
sikele2236
这是异步库
2015年02月03日 00点02分
level 9
kedamitch
cluster模块是new出多个服务实例,相互之间不会共享内存。至于外部存储操作上的时序问题,这个和nodejs的异步无关了。一般一个服务集群多次访问db时,都会引入同步问题。比如先做a操作,再做b操作,在多台机器在同时操作时会有问题,这个时候可以在数据库设计上解决,当然解决此类问题的最成熟方案还是使用全局锁,搭建一个zookeeper服务。
2015年02月03日 14点02分
6
level 1
★主角保护条例
异步不是定死的吧,可以选择异步还是同步,就算不说可以选择,能做到异步,那同步也是一定支持的啊。。。
这一定是水贴,骗我回复。。。
2015年02月05日 08点02分
7
sikele2236
同步是需要锁的支持的,要么就单线程并且不异步。
2015年02月05日 09点02分
★主角保护条例
@sikele2236
数据库加一个是否在操作的字段,操作开始1,操作结束0;单线程的,但是会出现多个帐号修改同一条数据的情况,和多线程事务一样;为1时当前修改放进数组,继续处理后面的修改,处理完后再去把数组里的修改拉出来继续,10次尝试失败后弹窗显示修改失败的列表;
2015年02月06日 07点02分
level 1
无恨川杯味啊54
nodejs多队列交互, 好好学习吧, 少年, 你还嫩的很
2015年02月26日 01点02分
9
sikele2236
用nodejs的都不懂并发问题,你还是多学学吧,少年
2015年02月26日 02点02分
无恨川杯味啊54
@sikele2236
不懂并发, 说明你不懂套接字. 好好学学TCP原理, 菜鸟.
2015年02月27日 00点02分
sikele2236
@无恨川杯味啊54
提到套字节就跟说明你不懂并发了,并发甚至可以和网络无关,你在本机上都能多发起几个任务并发。呵呵。
2015年02月27日 00点02分
无恨川杯味啊54
@sikele2236
哥送你几个关键字, socket, epoll, libevent, libev, Linux服务器本身就是基于epoll异步的, 好好学习学习, 别没事出来丢人.
2015年02月27日 00点02分
level 1
无恨川杯味啊54
你说你shell都不会写, 穷bb么, 丢人O, 少年
2015年02月27日 01点02分
10
sikele2236
https://tieba.baidu.com/p/3606118264
2015年02月27日 01点02分
level 1
贴吧用户_0bV8eNC919
lz2B么 下个方法写在回调函数里 不就是同步么
2015年03月03日 07点03分
11
sikele2236
两个请求你TM第二个请求的东西写第一个请求的回调里? 能不这么2b么?
2015年03月03日 07点03分
贴吧用户_0bV8eNC919
代码好看 就得用闭包
2015年03月04日 09点03分
超神级路过
回复 sikele2236 :围观疯狗
2015年03月04日 11点03分
1