http://www.oschina.net/news/78582/tbox-v-1-6-0…
TBOX是一个用c语言实现的跨平台开发库. 针对各个平台,封装了统一的接口,简化了各类开发过程中常用操作,使你在开发过程中,更加关注实际应用的开发,而不是把时间浪费在琐碎的接口兼容性上面,并且充分利用了各个平台独有的一些特性进行优化. 这个项目的目的,是为了使C开发更加的简单高效. * 源码仓库:https://github.com/tboox/tbox * 在线文档:https://tboox.io/#/zh-cn/ ## 内存整体架构 TBOX的内存管理模型,参考了linux kernel的…
进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程queue的生成是用multiprocessing模块生成的. 在生成子进程的时候,会将代码拷贝到子进程中执行一遍,及子进程拥有和主进程内容一样的不同的名称空间. 示例1: import multiprocessing def foo(): q.put([11,'hello',True]) prin…
一个大胆的尝试:使用巨型lua协程来表示整个“一局”流程. lua协程是一个很另类的功能,有并发的影子但又不是真的并发,所以真正拿它来做大功能框架的范例不多,通常用于一些小型trick式设计.但这次我在大富翁里把它用到了“极致”:整个一局游戏,就是全部跑在一个协程里的! 简单的说:在开始按钮的点击响应函数里(自然是在“主协程”中),创建出用于新一局游戏的“run协程”,然后在这里面启动这一局的while大循环,共3层:第1层为每个回合,第2层为每个玩家,第3层为每个指令.每当要等待一个指令时,r…
SDL 简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux.Windows.Mac OS X等)的应用软件.目前SDL多用于开发游戏.模拟器.媒体播放器等多媒体应用领域. SDL提供的功能 1. 视频 设置8bpp或更高的任意色彩深度的视频模式.如果某个模式硬件不支持,可以选择转化为另一模式. 直接写入线性的图像帧缓冲…
1.0 协程库引言 协程对于上层语言还是比较常见的. 例如C# 中 yield retrun, lua 中 coroutine.yield 等来构建同步并发的程序. 本文就是探讨如何从底层实现开发级别的协程库. 在说协程之前, 简单温故一下进程和线程关系. 进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在. 线程是进程的一部分,没有自己的地址空间, 与进程内的其他线程一起共享分配给该进程的所有资源.进程和线程是1对多关系, 协程同线程关系也是类似. 一个线程中可以有多个协程. 协程同线程相…
好久不见! 自 CloudQuery v1.2.1 发布至今,已有月余,在此期间我们收到了很多朋友对 CloudQuery 的反馈和建议,很多朋友表达了对 v1.3.0 的期待,非常感谢. CloudQuery 新版本原计划 12 月 10 号上线,由于我们对 v1.3.0 提出了更多要求和更高标准,因此延迟到今天发布. 本次功能升级较多,请各位做好准备! 一.语句收藏功能 支持 SQL 语句收藏,支持对收藏语句的自定义命名. 可在收藏管理中查看执行语句.语句别名.更新时间和使用次数:支持针对语…
libgo 是一个使用 C++ 编写的协作式调度的stackful协程库, 同时也是一个强大的并行编程库. 设计之初是为高并发分布式Linux服务端程序开发提供底层框架支持,可以让链接进程序的同步的第三方库变为异步库,不影响逻辑的前提下提升其性能. 目前支持两个平台: Linux (GCC 4.8+) Windows (Win7.Win8.Win10 x86 and x64 使用VS2013/2015编译) 使用libgo编写并行程序,即可以像golang一样开发迅速且逻辑简洁,又有C++原生的…
协程(coroutine)顾名思义就是“协作的例程”(co-operative routines).跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程技巧.实际上协程的概念比线程还要早,按照 Knuth 的说法“子例程是协程的特例”,一个子例程就是一次子函数调用,那么实际上协程就是类函数一样的程序组件,你可以在一个线程里面轻松创建数十万个协程,就像数十万次函数调用一样.只不过子例程只有一个调用入口起始点,返回之后就结束了,而协程入口既可以是起始点…
tbox之前提供的stackfull协程库,虽然切换效率已经非常高了,但是由于每个协程都需要维护一个独立的堆栈, 内存空间利用率不是很高,在并发量非常大的时候,内存使用量会相当大. 之前考虑过采用stacksegment方式进行内存优化,实现动态增涨,但是这样对性能还是有一定的影响,暂时不去考虑了. 最近参考了下boost和protothreads的stackless协程实现,这种方式虽然易用性和灵活性上受到了很多限制,但是对切换效率和内存利用率的提升效果还是非常明显的.. 因此,我在tbox里…