加载中
xmake-vscode插件开发过程记录

最近打算给xmake写一些IDE和编辑器的集成插件,发现vscode的编辑器插件比较容易上手的,就先研究了下vscode的插件开发流程,并且完成了xmake-vscode插件的开发。...

2017/10/12 10:29
2.2K
不同编译器对预编译头文件的处理

现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的, 如果能够吧大部分通用的头...

tbox新增64K微内核编译模式

为了进一步裁剪tbox,更好的适配嵌入式开发平台,tbox新增了--micro=y的微模块编译选项 如果启用此编译选项,那么只会编译tbox里面较轻量的一些模块,是的编译后的库大小,尽量保证在64K左右...

记boost协程切换bug发现和分析

在分析了各大开源协程库实现后,最终选择参考boost.context的汇编实现,来写tbox的切换内核。 在这过程中,我对boost各个架构平台下的context切换,都进行了分析和测试。 在macosx i386和mip...

2016/11/13 23:16
852
聊聊原子操作那些事

原子操作,线程间交互数据最细粒度的同步操作,它可以保证线程间读写某个数值的原子性。 由于不需要加重量级的互斥锁进行同步,因此非常轻量,而且也不需要在内核间来回切换调度,效率是非常...

线程局部存储tls的使用

线程局部存储(Thread Local Storage,TLS)主要用于在多线程中,存储和维护一些线程相关的数据,存储的数据会被关联到当前线程中去,并不需要锁来维护。。

TBOOX开源社区开通

TBOOX开源工程专注于c的跨平台开发,如果大家对TBOOX的项目或者对c语言跨平台开发感兴趣 可以加入TBOOX开源社区互相交流或者反馈意见。。

多进程等待的跨平台实现

最近在xmake中,用lua的协程实现了多任务编译,效果还是不错的,不过后来发现一个问题: 如果所有编译进程都在处理编译,没有退出的时候,xmake的lua主进程会不断地在这些任务间,不停的切换...

演示:如何编译tbox

利用xmake进行tbox的跨平台编译演示

2016/07/17 16:12
1.7K
自定义流的实现和使用

tbox中提供了常用的一些stream模块,例如:data、file、http、sock等,可以通过指定不同的url,使用相同的接口进行数据流的读写,非常的方便。 也可以通过自定义流的方式,扩展读写逻辑。。...

tbox v1.5.1 更新内容

优化stream,支持对字符设备文件的读写 2. 自动检测所有系统libc接口,优先使用系统版本 3. 修复android下的一些bug 4. 修改tb_init接口,增加allocator自定义内存分配器参数,实现用户的侵入...

利用正则实现匹配和替换

tbox里面针对三个正则库(pcre/pcre2/posix)进行了封装,实现接口统一和跨平台处理,只要xmake在编译配置的时候自动检测到其中一种库,就可以使用了,一般会优先使用pcre2。 如果你不想过多...

静态库和动态库的编译切换

如果你想在同一个target上既编译静态库,又能编译动态库,那么稍微修改下 xmale.lua就行了

低精度定时器的使用

tbox提供了两种定时器: 一种是基于最小堆的高精度定时器,精确到ms级别,但是时间复杂度在O(logn) 还有一种就是基于timing-wheel时间轮算法的低精度定时器,时间复杂度仅为O(1),实常数级别...

tbox中vector容器的使用

tbox的vector容器沿用了stl库中vector的命名,说白了就是以数组方式存储元素,也是整个容器库中最基础的容器之一。 当然,在c中用tbox的vector跟用stl的vector其实差不了太多,用起来都很方便...

高精度定时器的使用

tbox内部提供了两种定时器实现:timer和ltimer * timer: 高精度版本,采用最小堆实现,复杂度是:O(log(n)) * ltimer: 低精度版本,采用linux内核中的timing-wheel算法,复杂度是:O(1)...

切换tbox全局内存分配器

tbox的默认内存分配,是完全基于自己的内存池架构,支持内存的快速分配,和对碎片的优化,并且支持各种内存泄露、溢出检测。 如果不想用tbox内置的默认内存分配管理,也可以灵活切换到其他分...

tbox的裁剪和定制化编译

默认编译出来的tbox库,支持的功能比较全,带有所有模块,并且支持ssl(依赖polarssl/openssl)、gzip(依赖zlib)、database(依赖sqlite3/mysql)。 因此生成的库文件偏大,而且会依赖三个...

内置双向list和外置双向list_entry的使用

list和list_entry都是双向链表的容器,也都支持迭代器模式和算法操作,区别就在元素的维护上。 如果要做比喻的话,list就是傻瓜式操作,list_entry就是定制化操作。。。...

2015/10/22 10:28
2.4K
实现json解析工具jcat

jcat是一个shell下的解析json的工具,具有以下功能: 1. 支持指定路径解析,打印指定路径下的所有对象信息 2. 支持宏路径,可以级联宏替换 3. 使用tbox进行了跨平台支持,预编译版本直接可以...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部