libuv 是 Node 的新跨平臺抽象層,用於抽象 Windows 的 IOCP 及 Unix 的 libev。做者打算在這個庫的包含全部平臺的差別性。python
特性:
非阻塞 TCP 套接字
非阻塞命名管道
UDP
定時器
子進程生成
經過 uv_getaddrinfo 實現異步 DNS
異步文件系統 API:uv_fs_*
高分辨率時間:uv_hrtime
正在運行程序路徑查找:uv_exepath
線程池調度:uv_queue_work
TTY控制的ANSI轉義代碼: uv_tty_t
文件系統事件如今支持 inotify, ReadDirectoryChangesW 和 kqueue。很快會支持事件端口:uv_fs_event_t
進程間的 IPC 與套接字共享:uv_write2異步
已受支持的平臺:
Microsoft Windows 操做系統,如 Windows XP SP2。使用 Visual Studio 或 MinGW 構建
Linux 2.6 使用 GCC 工具鏈
MacOS 使用 GCC 或 XCode 工具鏈
Solaris 121 或以後版本,使用 GCC 工具鏈svn
如下是正題:工具
(1)採用VS2005編譯( 以失敗了結)
幾點經驗:
1.默認安裝python時無環境變量,要在環境變量裏增長 python的安裝路徑,path c:\python27等,若是已經有了path名,在值的後面加「;」分號,再加c:\python27
2.運行libuv下載目錄裏的 vcbuild.bat會提示 Visual Studio沒有找到,是由於它只支持vs2008和vs2010.
3.打記事本打開vcbuild.bat,增長對vs2005的支持,紅色爲新增長部分,此時能夠生成 uv.sln文件
@rem Look for Visual Studio 2010
if not defined VS100COMNTOOLS goto vc-set-2008
if not exist "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2008
call "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
set GYP_MSVS_VERSION=2010
goto select-target學習
:vc-set-2008
@rem Look for Visual Studio 2008
if not defined VS90COMNTOOLS goto vc-set-2005
if not exist "%VS90COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-notfound
call "%VS90COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
echo Warning: building with Visual Studio 2008 is currently not supported.
set GYP_MSVS_VERSION=2008
goto select-targetui
:vc-set-2005
@rem Look for Visual Studio 2005
if not defined VS80COMNTOOLS goto vc-set-notfound
if not exist "%VS80COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-notfound
call "%VS80COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
echo Warning: building with Visual Studio 2005 is currently not supported.
set GYP_MSVS_VERSION=2005
goto select-target操作系統
用VS2005編譯uv.sln發現各類錯誤,其中有stdint.h 文件缺乏,讀寫鎖未定義等,最後放棄線程
(2)VS2010上進行
很折騰,要安裝vs2010要很長時間,完成後再次運行vcbuild.bat會生成新的uv.sln能夠順利編譯成功,但不久會發現,曉以電腦太卡了,果斷卸載了2010.進程
(3)vs2008上進行
很順利,電腦不卡了事件
(4)總結: libuv在window下編譯最好用VS2008,這個過程當中要注意python、svn等軟件的配置。 下一階段將進行libuv的系統學習,歡迎交流 qq 601880671