在之前的一篇博客中,写了一个在特殊情况下,也就是只有一个读线程和一个写线程的情况下,的无锁队列的实现。其中甚至都没有利用特殊的原子加减操作,只是普通的运算。这样做的原因是,即使是特殊的原子加减操作,也比普通的加减运算复杂度高很多。因此文中的实现方法可以达到很高的运行效率。但是,有的情况下并不是只有一...
分类:
编程语言 时间:
2014-12-09 00:15:40
阅读次数:
300
在FPGA设计中,所有的算数运算符都是按照无符号数进行的。如果要完成有符号数计算,对于加、减操作通过补码处理即可用无符号加法完成。对于乘法操作,无符号数直接采用“*”运算符,有符号数运算可通过定义输出为 signed 来处理。 需要注意的是,尽量不要使有符号数与无符号数进行混合计算。因为只要有...
分类:
其他好文 时间:
2014-11-26 01:19:11
阅读次数:
258
实现数的原子性加减。什么是原子性的加减呢?
举个例子:如果一个变量 Long value =0;
首先说一下正常情况下的加减操作:value+=1;
1:系统从Value的空间取出值,并动态生成一个空间来存储取出来的值;
2:将取出来的值和1作加法,并且将和放回Value的空间覆盖掉原值。加法结束。
如果此时有两个Thread ,分别记作threadA,threa...
分类:
其他好文 时间:
2014-10-25 23:07:35
阅读次数:
359
C语言使用time_t结构体表示时间戳,它本质上是个long类型。我们可以使用如下函数获取当前时间的时间戳:time_ttime(time_t*timer)函数功能:得到从标准计时点(一般是1970年1月1日午夜)到当前时间的秒数。既然time_t表示的是秒数,那我们可以通过加减操作获得某个时间的时...
分类:
编程语言 时间:
2014-10-23 16:01:41
阅读次数:
257
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
来看AtomicInteger提供的接口。
public final int get()
//取当前的值,并设置...
分类:
其他好文 时间:
2014-10-21 21:44:35
阅读次数:
190
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
来看AtomicInteger提供的接口。
//获取当前的值
public final int get()
//取当前的值,并设置...
分类:
编程语言 时间:
2014-09-22 12:35:22
阅读次数:
149
中点Bresenham算法光栅化画直线,每次只位移一个像素,精度高!此源码借助直线 y=x 做了一些转换,简化了主位移的处理,每次移动只需要 加减操作, 不需要乘除!速度极快!! 原理在最后,下面先贴上核心代码~
void Bresenham_LineTo(CDC *pDC, int x1, int y1, int x2, int y2) //中点Bresenham算法光栅化画直线
{
flo...
分类:
其他好文 时间:
2014-09-02 19:55:27
阅读次数:
223
InterLockedIncrement and InterLockedDecrement实现数的原子性加减。什么是原子性的加减呢?举个例子:如果一个变量 Long value =0;首先说一下正常情况下的加减操作:value+=1;1:系统从Value的空间取出值,并动态生成一个空间来存储取出来的...
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。 来看Ato...
分类:
编程语言 时间:
2014-07-22 08:10:35
阅读次数:
196
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。来看AtomicInteger提供的接口。//获取当前的...
分类:
其他好文 时间:
2014-06-26 18:18:11
阅读次数:
272