在写 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 的某些东西,所以多了一个线程吧。一时兴起,也不知道怎么搜索关键词,也不想深究了。