1
tracyone 2015-08-07 01:36:21 +08:00 via Android
打算看这本书,没想到这本书讲这么深…
|
2
Knife42 OP @tracyone 我觉得要读懂CSAPP 上像处理器体系结构、存储器层次结构等章节确实需要比较专业的 CS 知识,但像优化程序性能、异常控制流、系统级 IO、网络编程、并发编程等章节感觉上更加偏向于工业实践,一边敲代码一边 Google、SO 就能懂,从这几个章节我也学到了很多。共勉~
|
3
loggerhead 2015-08-07 08:48:42 +08:00 via iPhone
我实现了一个基于 libuv 的简单 http server,正好有些问题可以交流交流
|
4
nirocfz 2015-08-07 10:05:32 +08:00
似乎并不能算是异步
|
5
zts1993 2015-08-07 10:35:22 +08:00
epoll 可以实现异步??求教
|
6
Mirana 2015-08-07 17:38:00 +08:00
nfds = epoll_wait(efd, events, MAXEVENTS, -1);
这句还是阻塞了,似乎只有用上线程池才能模拟真正的异步。 |
7
Knife42 OP |
8
Knife42 OP @loggerhead
在 GitHub 上有项目吗?我想参观学习~ |
9
loggerhead 2015-08-07 18:55:04 +08:00
@Knife42 https://github.com/loggerhead/lhttpd 感觉有点乱,但是自己理不清,要是你能给点意见就好了~
|
10
Mirana 2015-08-07 19:45:12 +08:00
@Knife42 我也是最近刚开始研究这个,select/poll是异步io,但是事件通知是阻塞的,然后epoll/kqueue将select/poll的fds遍历进化掉了,然而事件通知仍然是阻塞的,异步不阻塞的方法:
1.posix aio 2.epoll/kqueue,使用线程池模式分主线程和worker线程,主线程不阻塞一直循环,子线程阻塞监听io事件,也就是libev和libuv的eventloop 3.在并发量不大的情况下,可以fork子进程的模式去处理连接,和线程池模式有点相似 4.如果有些说的不对不要打我。。 |