• 原子变量与原子操作


    1.原子操作的速度要快于临界区,event,互斥量,如果多个线程同时写一个变量时,最方便的就是原子操作。
    原子操作函数,解决多线程安全

    2.原子变量也是为了解决线程冲突问题,
    如果两个线程同时访问同一个变量,一个线程改变了这个变量,另一个线程就会出现一些bug。

    3.release和debug模式
    release会进行代码优化,让代码速度更快,一般程序都要写成release。若想避免这种优化,使用关键字volatile,强制每次从内存中读取。
    操作系统操作所有的变量都需要依赖于寄存器。我们要访问一个变量,必须要读到寄存器中才可以访问。

    4.C语言中0和NULL是完全等价的。

    5.多个线程同时访问,同时写入同一个变量,会发生冲突。
    一个变量是线程安全,多线程同时读写没有误差。临界区,event事件,互斥量。

    6,原子操作

    #include <stdio.h>
    #include <stdlib.h>
    #include <Windows.h>
    #include <limits.h>
    
    
    int num = 0;
    DWORD WINAPI runX(void *p)
    {
        
        for (int i = 0; i < 10000; i++)
        {
            //num++;
            InterlockedIncrement(&num);    //表示num++,原子操作,
    保证完整操作,我操作完成后,后面的才能操作。
    InterlockedExchangeAdd(&num, 1); //num=num+1 } } int main() { HANDLE hd[10]; for (int i = 0; i < 10; i++) { hd[i] = CreatThread(NULL, 0, runX, NULL, 0, NULL); } WaiForMultipleObjects(10, hd, TRUE, INFINITE); printf("%d", num); system("pause"); }
  • 相关阅读:
    前端安全
    关于HTTPS的概念性了解
    数组去重
    防抖与节流
    对meta标签的再次认识
    关于路由, 我好奇的那些点
    关于构造函数,实例,原型对象一纯手工的理解
    数据库查找操作-java
    python之图像加载和简单处理
    python之excel表格操作
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5783130.html
Copyright © 2020-2023  润新知