Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit fc20b8b

Browse files
committedApr 17, 2016
Update README.md
1 parent 2cfc4f6 commit fc20b8b

File tree

1 file changed

+38
-3
lines changed

1 file changed

+38
-3
lines changed
 

‎README.md

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@ libgo是一个使用C++11编写的协作式调度的stackful协程库,
1919
libgo有以下特点:
2020

2121
* 1.提供golang一般功能强大协程,基于corontine编写代码,可以以同步的方式编写简单的代码,同时获得异步的性能,
22-
* 2.支持海量协程, 创建100万个协程只需使用2GB内存
22+
* 2.支持海量协程, 创建100万个协程只需使用2GB物理内存
2323
* 3.允许用户自由控制协程调度点,随时随地变更调度线程数;
2424
* 4.支持多线程调度协程,极易编写并行代码,高效的并行调度算法,可以有效利用多个CPU核心
2525
* 5.可以让链接进程序的同步的第三方库变为异步调用,大大提升其性能。再也不用担心某些DB官方不提供异步driver了,比如hiredis、mysqlclient这种客户端驱动可以直接使用,并且可以得到不输于异步driver的性能。
2626
* 6.动态链接和静态链接全都支持,便于使用C++11的用户静态链接生成可执行文件并部署至低版本的linux系统上。
2727
* 7.提供协程锁(co_mutex), 定时器, channel等特性, 帮助用户更加容易地编写程序.
28-
* 8.网络性能强劲,超越ASIO异步模型;尤其在处理小包和多线程并行方面非常强大。
28+
* 8.网络性能强劲,超越boost.asio异步模型;尤其在处理小包和多线程并行方面非常强大。
2929

3030
* 如果你发现了任何bug、有好的建议、或使用上有不明之处,可以提交到issue,也可以直接联系作者:
3131
email: 289633152@qq.com QQ交流群: 296561497
3232

33-
* samples目录下有很多示例代码,内含详细的使用说明,让用户可以循序渐进的学习libgo库的使用方法。
33+
* **samples目录下有很多示例代码,内含详细的使用说明,让用户可以循序渐进的学习libgo库的使用方法。**
3434

3535

3636
##### libgo的编译与使用:
@@ -136,3 +136,38 @@ libgo有以下特点:
136136
4.未定义行为:在Linux系统上开启了ENABLE_SHARED_STACK参数时,协程栈上的对象不可被协程外部访问。
137137
由于采用共享栈的方式调度协程,协程处于非执行状态时,栈上对象会被保存到另外一块内存中,因此会失效,
138138
此时通过保存的地址访问栈上对象是一种未定义行为。有共享需求的对象请将其置于堆上或使用channel。
139+
140+
##### Linux系统上Hook的系统调用列表:
141+
*
142+
143+
connect
144+
read
145+
readv
146+
recv
147+
recvfrom
148+
recvmsg
149+
write
150+
writev
151+
send
152+
sendto
153+
sendmsg
154+
poll
155+
select
156+
accept
157+
sleep
158+
usleep
159+
nanosleep
160+
161+
以上系统调用都是可能阻塞的系统调用, 在协程中使用均不再阻塞整个线程, 阻塞等待期间CPU可以切换到其他协程执行.
162+
163+
*
164+
close
165+
fcntl
166+
ioctl
167+
getsockopt
168+
setsockopt
169+
dup
170+
dup2
171+
dup3
172+
173+
以上系统调用不会造成阻塞, 虽然也被Hook, 但并不会完全改变其行为, 仅用于跟踪socket的选项和状态.

0 commit comments

Comments
 (0)
Please sign in to comment.