【cdk的使用】C语言 跨平台的原子操作

2023-11-09

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;
}

怎么样?是不是很简单。快来尝试吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【cdk的使用】C语言 跨平台的原子操作 的相关文章

随机推荐

  • LAMP环境的搭建与部署

    目录 一 LAMP是什么 二 LAMP是怎么协同工作的 为什么需要的是这四个组合 三 搭建LAMP环境 gt 部署WEB程序 1 LAMP环境作用 四 LAMP环境搭建过程 1 安装apache 2 安装mysql 一 LAMP是什么 Li
  • Mac 抓包工具 Charles安装和破解教程

    1 环境 mac 10 13 charles 4 2 2 安装 官方地址 https www charlesproxy com 3 破解 1 可以参考CSDN博客上面的破解教程 比如修改charles jar文件或者替换掉原来的软件 2 可
  • 【R语言】——火山图绘制

    本期介绍利用R语言筛选差异表达基因及绘制火山图 一 什么是火山图 火山图 volcano plot 是散点图的一种 它将统计测试中的统计显著性量度 如p value FDR 和变化幅度相结合 从而可以快速直观地识别那些变化幅度较大且具有统计
  • 写一篇关于挠脚心的文章

    挠脚心是一种常见的不适症状 它指的是在脚底部或脚趾处感到刺痛或针刺感 挠脚心可能是由于多种原因引起的 其中常见的原因有 高弓足 高弓足是指脚弓高度过高 导致脚底和脚趾处压力过大 引起挠脚心 足部运动损伤 长期运动或活动过度可能导致脚底和脚趾
  • SDNU 1224.Tom'problem B(迪杰斯特拉)

    Description Tom is a student in Shan Dong Normal University his University in the suburbs this day Tom wanted to go to t
  • 《马克思主义基本原理概论》第 1 章世界的物质性及发展规律

    未完待续
  • Python-GIL深度理解

    1 GIL介绍 GIL 意为全局解释器锁 是cPython执行多线程 进程计算密集型代码效果不如人意的主要原因 cPython限制一个进程内同时只能执行一个线程 首先介绍一下 正常多线程 进程执行时 多线程 进程数据混乱的原因 cpu分成多
  • Ubuntu中安装Python的mysqlclient的相关命令

    在Ubuntu中安装Python的mysqlclient的相关命令 安装MySQL数据库 具体步骤如下 apt get update apt get install python pip 已经有pip命令则跳过此步骤 apt get ins
  • 搭建个人网站,服务器应该怎么选择。

    新手怎么去挑选服务器的配置呢 目前不管是个人还是企业 只要是需要在网上开展业务的话 都需要有自己的网站或者应用程序 VPS因为性能较低使用不太方便 渐渐被淘汰出市场 那么在各类服务器的选项下 怎么选择适合的配置呢 一 服务器区域 影响一个网
  • VMware安装ubuntu连接互联网和主机

    1 需求 ubuntu既需要连接互联网也需要和主机进行ssh操作 2 实现 2 1 VMware查看NAT IP 如下图 VMware随机生成的一个IP 无需手动修改 2 2 对虚拟机设置使用NAT模式 2 3 修改物理机网卡 修改物理机v
  • Mybatis、MybatisPlus自定义返回单个Map集合

    1 mybatis返回单个map存单条数据 mapper接口 Map
  • 【Fluent】雷诺方程:推导与求解(附MATLAB代码)

    目录 引言 雷诺方程的推导 雷诺方程的解 雷诺方程的推广 有限体积法 引言 雷诺方程 即湍流的平均运动方程 所属黏性不可压缩流体动力学 从Navier Stokes方程派生 是经典润滑理论的基本方程之一 1886年 奥斯本 雷诺兹 Osbo
  • 【单片机毕业设计】【dz-078】基于物联网的环境测控系统设计

    最近设计了一个项目基于物联网的环境测控系统设计 与大家分享一下 一 基本介绍 项目名 WIFI环境监测 实物 项目编号 mcuclub dz 078 单片机类型 STM32F103C8T6 具体功能 1 通过DHT11检测温湿度 当温湿度超
  • Python判断字符串是否为字母或者数字

    str 1 123 str 2 Abc str 3 123Abc isdigit函数判断是否数字 print str 1 isdigit True print str 2 isdigit False print str 3 isdigit
  • 算法笔记——力扣。持续更新

    动态规划 算法复习 动态规划 HongmingYou 博客园 T583
  • 【tflearn系列教程】(二)如何安装tflearn

    本教程参考自tflearn官方文档 英文版 http tflearn org 主要是对官方文档的翻译与讲解 并结合本人实战经验而作 如有错误 欢迎指出 作者 totorocyx 邮箱 847994259 qq com 转载请联系 一 从te
  • Android Service 加载 GLSurfaceView 显示动画

    先说遇到的需求 要在不影响前台应用的情况下 弹出一些通知 且样式比较花哨 所以用后台Service GLSurfaceView的方式做个小demo 趟一趟路 实现的效果就是这样了 就是桌面有个cube一直转圈圈 不影响其他任何操作 简单来说
  • 西门子1500可编程逻辑控制器语言介绍(1)----CEM语言

    一 CEM的基本信息 1 CEM编程语言介绍 cem编程语言又称因果矩阵 用于快速的将原因与结果之间的关系清晰地表达出来 在该编程语言中 过程事件称为 原因 过程之后的反映称为 结果 一个 原因 可以激活多个结果 结果由列表示 原因与结果的
  • MobaXterm_Personal_10.9 密钥生成及使用

    MobaXterm Personal 个人认为要比PuTTY SmarTTY SecureCRT XShell等SSH终端功能界面交互 功能上好许多 它可以和虚拟机中的Linux共享一套配置信息 本文简单交流一下关于MobaXterm密钥生
  • 【cdk的使用】C语言 跨平台的原子操作

    Github地址 https github com wujin1989 cdk 有过C开发的朋友都知道 在不同平台上原子操作的API是不一样的 这就导致如果想开发一个跨平台的lock free程序是痛苦的 怎么办 凉拌 只能手撸 好在cdk