Node.js通过将基于事件的模型放在其核心,使用事件循环而不是线程来解决"每个连接一个线程问题".所有昂贵的I/O操作总是与启动的操作完成时执行的回调异步执行.
如果任何操作发生的观察由epoll()等多路复用机制处理.
我的问题现在是:
为什么在使用阻塞Systemcalls select/epoll/kqueue时NodeJS阻塞?
或者根本不是NodeJS Single Threaded,所以需要第二个Thread
来观察select/epoll/kqueue的所有I/O操作?
我正在考虑编写一个基于的TCP服务器epoll
.为了实现最佳性能,我也希望实现多核支持.但是在我的研究过程中出现了以下问题:epoll_wait()
从两个不同的线程调用两个-Call 是否更快,每个线程在双核上观察自己的文件描述符?或者这是否只调用一个epoll_wait()
观察所有文件描述符的单个?
由于内核观察文件描述符,我认为在用户空间调用中使用多少线程并不重要epoll_wait()
?
我想测量Ubuntu下一个活动Apache连接(= Thread)的内存消耗.
有没有能够做到这一点的监控工具?如果没有,有谁知道Apache连接大致需要多少内存?
我正在尝试解码websocket框架,但在解码扩展的有效负载时我没有成功.这是我到目前为止所取得的成就:
char *in = data;
char *buffer;
unsigned int i;
unsigned char mask[4];
unsigned int packet_length = 0;
int rc;
/* Expect a finished text frame. */
assert(in[0] == '\x81');
packet_length = ((unsigned char) in[1]) & 0x7f;
mask[0] = in[2];
mask[1] = in[3];
mask[2] = in[4];
mask[3] = in[5];
if (packet_length <= 125) { **// This decoding works**
/* Unmask the payload. */
for (i = 0; i < packet_length; i++)
in[6 + i] ^= mask[i % 4];
rc = …
Run Code Online (Sandbox Code Playgroud) 我确实在libevent中实现了一个websocket服务器,虽然我没有Chrome或Firefox的任何问题,使用IE10我甚至无法建立连接.
握手:
IE10 Request:
GET /echo HTTP/1.1
Origin: 95.115.195.4
Sec-WebSocket-Key: rgPWUlUtk+h3CPWqk99OtA==
Connection: Upgrade
Upgrade: Websocket
Sec-WebSocket-Version: 8
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Host: 95.115.195.4:5555
Cache-Control: no-cache
Server Response:
HTTP/1.1 101 Switching Protocols
Upgrade: Websocket
Connection: Upgrade
Sec-WebSocket-Accept: jGmgQ/jOvew8MU9o3bbqPG9PHlY=
Sec-WebSocket-Protocol: chat
Run Code Online (Sandbox Code Playgroud)
IE10调试器说:SCRIPT12152:WebSocket错误:HTTP响应不正确.状态代码101
谁知道我做错了什么?
谢谢
以下两个陈述之间的区别在哪里?
print "surname=" ,$myVal, "\n";
和
print "surname=" .$myVal. "\n"
我测试了它们,两者都返回相同的结果.甚至还有区别吗?
谢谢
考虑这个JavaScript代码:
<script type="text/javascript">
function loop(Message){
document.getElementById('output').innerHTML =
document.getElementById('output').innerHTML + Message + '</br>';
}
window.setInterval("loop('Message1')", 1000); //Prints "Message1" every 1 Seconds
window.setInterval("loop('Message2')", 3000); //Prints "Message2" every 3 Seconds
</script>
<body>
<div id="output"></div>
</body>
Output:
Message1
Message1
Message2
Message1
Message1
Message1
Message2
...
Run Code Online (Sandbox Code Playgroud)
现在考虑这个PHP代码:
<?php
while(true){ // Print "Message1" every 1 Second
echo 'Message 1 </br>';
sleep(1);
}
while(true){ //This Code will never be executed,
echo 'Message 2 </br>'; //because the First Loop Blocks the Process!!!!!
sleep(3);
}
?>
Output:
Message1
Message1 …
Run Code Online (Sandbox Code Playgroud) epoll ×2
websocket ×2
apache ×1
architecture ×1
decoding ×1
erlang ×1
javascript ×1
node.js ×1
perl ×1