作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 java.nio api 编写网络应用程序。我的计划是在一个线程上执行 I/O,并在另一个线程上处理事件。不过,要做到这一点,我需要同步读/写,这样就永远不会满足竞争条件。
请记住,我需要同时处理数千个连接,同步值得吗,还是我应该使用单个线程进行 I/O 和事件处理?
最佳答案
你在做什么类型的事件处理?可能的瓶颈在哪里?你有瓶颈吗?
从最简单的实现开始,一旦您了解了瓶颈,就进行优化。
如果你发现你的网络 IO 线程读取速度不够快,因为它花费了太多时间处理事件,那么创建一个缓冲队列,与之同步,并让一个事件处理线程在队列中工作。
您可能想对队列的大小设置一个限制,这样您就不会最终耗尽内存。如果网络线程即将填满队列,让它等待直到有更多空间。
过早的优化对任何人来说都不好玩。
但是,要回答您的问题,两个线程之间的同步不太可能成为瓶颈,您不必担心它的开销。
关于java - 同步有多贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2647039/
我正在对 pandas DataFrame 创建进行基准测试,发现它比创建 numpy ndarray 更昂贵。 基准代码 from timeit import Timer setup = """ i
我是一名优秀的程序员,十分优秀!