浏览代码

Fix data races with Cortex-M4 intrinsics

https://en.wikipedia.org/wiki/Intrinsic_function

https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html
DricomDragon 5 年之前
父节点
当前提交
54f0d893e7
共有 1 个文件被更改,包括 5 次插入4 次删除
  1. 5 4
      prog/sources/setup-loop.cpp

+ 5 - 4
prog/sources/setup-loop.cpp

@@ -22,10 +22,11 @@ void setup (USER_MODE) {
 
 void loop (USER_MODE) {
 	if (gPerformCount) {
-		gCount1 += 1 ;
-		gCount2 += 1 ;
-		gCount3 += 1 ;
-		gCount4 += 1 ;
+		__atomic_fetch_add (& gCount1, 1, __ATOMIC_ACQ_REL);
+		__atomic_fetch_add (& gCount2, 1, __ATOMIC_ACQ_REL);
+		__atomic_fetch_add (& gCount3, 1, __ATOMIC_ACQ_REL);
+		__atomic_fetch_add (& gCount4, 1, __ATOMIC_ACQ_REL);
+
 		if (5000 <= millis (MODE)) {
 			gPerformCount = false ;
 			gotoLineColumn (MODE_ 0, 0) ;