在写 ruby 写多线程脚本的时候,突发奇想:就算是只在主线程里执行某个用时很长的函数,当按下 Ctrl+C 的时候会显示 Interrupt,那这个 Interrupt 是如何捕捉的呢?所以有了以下测试。
用例:Python(win64 、mingw64)、Ruby(win64 、mingw64)、Perl(mingw64),系统是普通 Win7 64 位。用资源管理器(resmon)来查看程序用到的线程数
Python win64: 2 线程
Python 的示例代码里一种用了 sleep,一种用了需时较长的函数(要有足够的时间,资源管理器上才会显示进程的信息),结果程序的线程数是一样的,说明 sleep 应该也是单线程函数。
Python mingw64: 1 线程
Ruby win64: 2 线程
Ruby mingw64: 3 线程???
Perl mingw64: 2 线程
(Strawberry perl 下载慢,ActiveState perl 安装又慢,感觉不测试也没事)
不知道 lua 简单的 sleep 语句怎么写,放弃。
结果还是有点出乎意料的。我猜测 win 原生的解释器应该是加了 posix 的某些东西,所以多了一个线程吧。一时兴起,也不知道怎么搜索关键词,也不想深究了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.