let userIndex = this.userList.findIndex(q => q.userId == userId);
this.userList.splice(userIndex, 1);
环境是vuejs。
上面是我写的常规删除数组指定对象的代码。
但是,如果这个this.userList
是在高并发的场景下,可能在执行第二行删除逻辑的时候,就已经被修改过了,这个时候,有什么线程安全的做法吗?
写到这里,突然想到,js是单线程的。。。。是不是不存在我担忧的这个问题?
let userIndex = this.userList.findIndex(q => q.userId == userId);
this.userList.splice(userIndex, 1);
环境是vuejs。
上面是我写的常规删除数组指定对象的代码。
但是,如果这个this.userList
是在高并发的场景下,可能在执行第二行删除逻辑的时候,就已经被修改过了,这个时候,有什么线程安全的做法吗?
写到这里,突然想到,js是单线程的。。。。是不是不存在我担忧的这个问题?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
是的,不存在你这种情况。js是单线程
顺便多说一句。你的删除效率是 n。删除n个就是 N N。如果真的是高并发,可以自己整个数据结构。或者说缓存几个,然后一并删除。删除的时候从后往前删。当然还得看你多高的并发。每秒几百个?还是每秒几个?*