Github地址: https://github.com/wujin1989/cdk
有过C开发的朋友都知道,在不同平台上原子操作的API是不一样的。这就导致如果想开发一个跨平台的lock-free程序是痛苦的。
怎么办?凉拌!只能手撸。好在cdk已经负重前行干了一些脏活累活。
下面用cdk来使用下原子操作:
#include "cdk.h"
atomic_t cnt = ATOMIC_VAR_INIT(0);
int thrd_func(void* p) {
for (int i = 0; i < 1000; i++) {
cdk_atomic_inc(&cnt);
}
return 0;
}
int main(void) {
thrd_t t;
cdk_thrd_create(&t, thrd_func, NULL);
for (int i = 0; i < 1000; i++) {
cdk_atomic_inc(&cnt);
}
cdk_thrd_join(t);
printf("cnt: %lld\n", cnt);
return 0;
}
怎么样?是不是很简单。快来尝试吧!