![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
系统编程
文章平均质量分 78
无敌大饺子
这个作者很懒,什么都没留下…
展开
-
设计实现OJ平台的遇到的一些问题和解决方法
需求毕业设计,实现一个能够自动编译、运行、监测程序运行使用资源、恶意系统调用的监控的一个OJ平台。 在设计实现的过程中的想法、碰到的问题、求解的过程以及解放方法,在这里记录下来。基础结构OJ主要由前端系统(WEB)和后端的判题程序构成,想法是后端的裁判程序做通用点,减少和前端系统的耦合,所以把后端给分离出来成一个独立的程序,大概的结构图是这样的。 解释下: 1. 前端其实可以由任何流行的原创 2015-05-04 20:40:51 · 5430 阅读 · 1 评论 -
likely, unlikely的作用
在项目中看到了likely、unlikely宏的使用, 一直不是很清楚它们的作用,所以就深究下。likely表示被测试的表达式大多数情况下为true, unlikely则表示相反。 两个宏定义:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)这两个宏经常在条件转移的原创 2015-06-03 10:57:34 · 904 阅读 · 0 评论 -
多线程false sharing带来的影响和一些优化.
最近在线项目中测试一个无锁队列的性能的时候发现,在一个线程push另一个线程pop整型数据的时候,吞吐量竟然和std::queue+spinlock类似甚至更差,这样完全体现不出lockfree的优势, 决定找找原因. 这个无锁队列是通过一个头指针来push数据,一个尾指针来pop数据来实现的.template<typename T>class LockFreeQueue { struc原创 2015-09-09 22:08:15 · 1050 阅读 · 0 评论