lukelyx

博主研究c++想必有多年的功力了吧,支持一下!!!
re: 云计算,炒作 luke 2008-12-31 10:35
我觉得云计算应该是技术进步和市场需求的产物,它不但不浪费资源,反而会有效的利用资源。google提供空间给用户做web,然后按流量计费,这种服务是基于云计算的,试想,以前没有云计算,就需要每个web都要架个服务器,规模大点还需要多个服务器。网站一多,其实是对资源的更多浪费,而且资源和性能也得不到保护,而有了云计算,等于多个网站共享云服务器,减少了浪费和重复建设,而且有专业的google工程师在幕后维护服务器的可靠性和性能,用户反而有更多的资源用在对市场需求的服务上。这我想就是资源的更合理利用和分配,而且也反映了一种进步,那就是分配更合理,分工更细致,更专业。
错了,是thinking in c++
对于静态变量的初始化顺序问题,在thinking in java 的name control 一章里介绍了两个技巧来出来处理这类问题。
re: 从线程角度看AO框架 luke 2008-10-12 07:36
这个感觉就是一个在用户层调度的线程,类似所谓的“纤程”概念,不知道是否这样?
这里还有一个问题需要讨论一下:
你在加listenfd的时候,用的是ET模式。ET模式的情况是,如果你不一次把缓冲区读空,以后,epoll就不会再通知你有数据。所以在大量并发连接的情况下,你只accept一次之后,会不会在buf中同时还有另外一个connect。这样的话,会不会以后就得不到listenfd的事件通知了?只是怀疑,没有实践过,见谅。
再进一步解释:
epoll_wait还是要工作的,即使是在多个进程同时wait在同一个epfd上,那会怎么工作呢,很显然,按epoll_wait顺序来通知进程。
加入 fd1是由A进程加入epfd的,而且用的是ET模式,那么加入通知的是进程B,显然B进程不会对fd1进行处理,所以以后fd1的事件再不会通知,所以经过几次循环之后,所有的fd都没有事件通知了,所以epoll_wait在timeout之后就返回0了。而在客户端的结果可想而知,只能是被阻塞。
这里有个问题,我想值得思考:
如果多个进程同时去epoll_wait同一个epfd,那么加入有fd状态发生了变化,内核怎么知道去通知哪一个进程来处理呢?我想在内核的实现上,不会去把每个监听的fd和进程进行绑定。所以内核不知道该去通知哪个进程来处理这些状态发生变化的fd们,所以出现了上述的情况,我没有读过epoll_wait的实现代码,上述判断只属于猜测。
在google上也看到过有人评论,当多个线程监听同一个epfd的时候,会发现所有线程同时从epoll_wait出来,我想这也是因为epoll_wait内部不知道该通知哪个线程来处理所导致的。
如果在创建worker之前就创建了epoll fd, 那么这个fd会被5个进程所共享,因为fork会复制所有父进程的内容;如果是之后创建,等于是每个进程都会创建一个自己的epoll fd。那么这两者之间有什么差别呢?
入栈的顺序应该是j,i吧?
<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿

搜索

最新评论