libwire:类似于GoLang和goroutines的C的用户空间线程(aka协程)库

时间:2024-02-22 14:29:35
【文件属性】:

文件名称:libwire:类似于GoLang和goroutines的C的用户空间线程(aka协程)库

文件大小:128KB

文件格式:ZIP

更新时间:2024-02-22 14:29:35

c library coroutines event-driven green-threads

libwire {#mainpage} libwire是一个用户空间线程库,旨在在C语言中提供类似于GoLang环境的外观。 即,它们之间的轻量级用户空间协作线程和通信通道。 与Go不同的是,它直接用于高性能的系统级编程,该编程足够关注内存分配,尽可能零拷贝和最小开销(即使以安全性和易于编程为代价)。 该库的一个指导原则是,尽可能不自行分配内存,让用户完全管理内存和分配。 在需要时提供了一个内存池,但是用户甚至可以将该内存作为静态数组提供,而不用分配每个部分。 该库是分层构建的,以使其更易于理解,并使每个部分都可复查以确保正确性。 为了支持OS兼容性,应该可以撕裂和更换某些部件。 分层 libcoro 用于实现整个库的底层是libcoro,用于在电线之间进行切换。 libcoro非常简单,只知道如何创建上下文切换区域以及如何在两个不同的上下文之间切换。 它是便携式的,几乎可以在任何环境下工作。 线 第一个libwire层是用户空间线程本身的层。 它可以轻松地进行设置和挂起/恢复。 它是libcoro的协程转换层之上的相当薄的一层。 void wire_thread_init(


【文件预览】:
libwire-master
----.gitignore(250B)
----src()
--------wire_semaphore.c(1KB)
--------http_parser.c(62KB)
--------wire_stack.c(3KB)
--------valgrind_internal.h(251B)
--------wire_io_gen.c.inc(93KB)
--------wire_log.c(4KB)
--------coro.c(19KB)
--------wire.c(5KB)
--------wire_lock.c(1KB)
--------wire_wait.c(2KB)
--------wire_channel.c(2KB)
--------wire_net.c(4KB)
--------wire_fd.c(4KB)
--------wire_pool.c(3KB)
--------CMakeLists.txt(692B)
--------wire_io.c(7KB)
--------wire_timeout.c(1KB)
----.travis.yml(284B)
----doxygen.config(105KB)
----LICENSE(1KB)
----tools()
--------regenerate.sh(105B)
--------gen_wire_io.py(13KB)
----.gdbinit(4KB)
----README.md(8KB)
----include()
--------http_parser.h(12KB)
--------wire_wait.h(3KB)
--------wire_timeout.h(2KB)
--------wire_channel.h(3KB)
--------wire_net.h(3KB)
--------wire_log.h(898B)
--------wire_lock.h(2KB)
--------wire_fd.h(3KB)
--------wire_pool.h(3KB)
--------wire_defer.h(1KB)
--------macros.h(352B)
--------list.h(2KB)
--------wire_io_gen.h(5KB)
--------coro.h(14KB)
--------wire.h(3KB)
--------wire_semaphore.h(279B)
--------wire_private.h(770B)
--------wire_stack.h(2KB)
--------wire_io.h(570B)
----test()
--------base.c(768B)
--------wait.c(1KB)
--------cancel.c(847B)
--------waiters.c(964B)
--------log_stdout.c(1KB)
--------recurser.c(546B)
--------ct_wait2.c(2KB)
--------bench.c(2KB)
--------echo_server.c(2KB)
--------pool.c(1KB)
--------utils.h(151B)
--------ct()
--------channel.c(742B)
--------locks.c(1KB)
--------ct_arg.c(897B)
--------utils.c(1019B)
--------ct_wait.c(1KB)
--------asyncio.c(2KB)
--------CMakeLists.txt(1KB)
--------web.c(6KB)
--------web_client.c(5KB)
----CMakeLists.txt(1KB)

网友评论