添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
不羁的上铺  ·  Xamarin.Forms Local ...·  2 年前    · 
冷静的抽屉  ·  c++ - Dbus org.bluez ...·  2 年前    · 
眼睛小的芒果  ·  javascript - ...·  2 年前    · 
逼格高的仙人掌  ·  JS ...·  2 年前    · 
libuv介绍:
libuv 是node.js作者写的,是 Node 的新跨平台抽象层,用于抽象 Windows 的 IOCP 及 Unix 的 libev 。作者打算在这个库的包含所有平台的差异性。
特性: ibuv 严格使用 异步 事件驱动 的编程风格。其核心工作是提供事件循环及基于 I/O 或其他活动事件的回调机制, 非阻塞 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
自己写的一个小例子:
client.h
return ThrowException ( Exception : : TypeError ( String : : New ( "Argument " #I " must be a bool" ) ) ) ; \
bool VAR = args [ I ] - > IsTrue ( ) ;
/ / 判断参数是否是string类型 , 并作转化
#define REQ_STRING_ARG ( I , VAR ) \
if ( args . Length ( ) < = ( I ) | | ! args [ I ] - > IsString ( ) ) \
return ThrowException ( Exception : : TypeError ( String : : New ( "Argument " #I " must be a string" ) ) ) ; \
Local < String > VAR = Local < String > : : Cast ( args [ I ] ) ;
/ / 判断参数是否是数组类型
#define REQ_ARRAY_ARG ( I , VAR ) \
if ( args . Length ( ) < = ( I ) | | ! args [ I ] - > IsArray ( ) ) \
return ThrowException ( Exception : : TypeError ( String : : New ( "Argument " #I " must be an array" ) ) ) ; \
Local < Array > VAR = Local < Array > : : Cast ( args [ I ] ) ;
/ / 判断参数是否是函数类型
#define REQ_FUN_ARG ( I , VAR ) \
if ( args . Length ( ) < = ( I ) | | ! args [ I ] - > IsFunction ( ) ) \
return ThrowException ( Exception : : TypeError ( String : : New ( "Argument " #I " must be a function" ) ) ) ; \
Local < Function > VAR = Local < Function > : : Cast ( args [ I ] ) ;
/ / 判断参数是否是对象类型并将对象转化为Local < Object >
#define REQ_OBJECT_ARG ( I , VAR ) \
if ( args . Length ( ) < = ( I ) | | ! args [ I ] - > IsObject ( ) ) \
return ThrowException ( Exception : : TypeError ( String : : New ( "Argument " #I " must be an object" ) ) ) ; \
Local < Object > VAR = Local < Object > : : Cast ( args [ I ] ) ;
/ / 给对象的某一字符串变量赋值var是变量,key是用来赋值的关键字
#define OBJ_GET_STRING ( OBJ , KEY , VAR ) \
Local < Value > __val = OBJ - > Get ( String : : New ( KEY ) ) ; \
if ( __val - > IsString ( ) ) { \
String : : Utf8Value __utf8Val ( __val ) ; \
VAR = * __utf8Val ; \
target - > Set ( String : : NewSymbol ( "ClientTest" ) , constructorTemplate - > GetFunction ( ) ) ;
uv_queue_work ( uv_default_loop ( ) , req , connectWork , ( uv_after_work_cb ) afterConnect ) ;
/ / 返回
return scope . Close ( Undefined ( ) ) ;
Handle < Object > client = ClientTest : : constructorTemplate - > GetFunction ( ) - > NewInstance ( ) ;
/ / 对象作为回调函数第二个参数
argv [ 1 ] = client ;
/ / 执行回调返回
node : : MakeCallback ( Context : : GetCurrent ( ) - > Global ( ) , baton - > callback , 2 , argv ) ;
/ / 删除对象
delete baton ;