首页 > 其他分享 >win32线程安全原子锁

win32线程安全原子锁

时间:2022-12-31 04:55:05浏览次数:47  
标签:COUNT THREAD void args 原子 win32 locker threads 线程

 1 // 微软官方例程 稍微修改了下 测试刚刚好
 2 
 3 #define THREAD_COUNT 20
 4 static volatile UINT vol = 0;
 5 void SimpleThreadA(void* id) {
 6     UINT& max = *(PUINT)id;
 7 
 8     for (size_t i = 0; i < max; i++)
 9     {
10         WDS("[No.%u]%d %u", max, i, GetTickCount());
11         InterlockedIncrement(&vol);
12     }
13 }
14 void MultiThreadTestA() {
15     DWORD num;
16     HANDLE threads[THREAD_COUNT];
17     int args[THREAD_COUNT];
18     int i;
19 
20     for (i = 0; i < THREAD_COUNT; i++) {
21         args[i] = i + 1;
22         threads[i] = reinterpret_cast<HANDLE>(_beginthread(SimpleThreadA, 0,
23             args + i));
24         if (threads[i] == reinterpret_cast<HANDLE>(-1))
25             // error creating threads
26             break;
27     }
28 
29     WaitForMultipleObjects(i, threads, true, INFINITE);
30     WDS("VOL %d", vol);
31 }
/*
* @@静态类 
* Locker 原子锁
* QQ : 4seaynl
* */
class Locker {
private:
    LONG m_locker = NULL;
public:
    void Lock() {
        while (TRUE == m_locker) ::Sleep(1);

        InterlockedIncrement(&m_locker);
    }
    void Unlock() {
        InterlockedDecrement(&m_locker);
    }
};

不喜欢用别人的代码 std::mutex,,,

 

标签:COUNT,THREAD,void,args,原子,win32,locker,threads,线程
From: https://www.cnblogs.com/ksanl/p/17016174.html

相关文章

  • 一次多线程并发查询导致结果混乱的问题的排查和记录·JAVA·2022
    业务背景该业务是报表查询类业务:要求从销售出库数据(存储于ElasticSearch索引中)中,按照管理者分组聚合查询各个管理者一定时间段内的动销汇总数据,如出库金额、毛利率等。但......
  • java 多线程并行执行任务 demo
    packagecom.sleep.demo;importorg.apache.commons.lang3.StringUtils;importjava.util.*;importjava.util.concurrent.*;importjava.util.concurrent.atomic.A......
  • 【Worker】js使用多线程实现倒计时
    tremaintime.js主要用于计算时间,放到assets目录,因为Worker需要请求获取这个文件的,要同源onmessage=function({data}){setInterval(()=>{postMessage(ini......
  • 线程的三道面试题
    进程:​ 进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程线程​ 线程是比进程更小的基本单位,它被包含在进程之中,是进程中的实际运作单位。一......
  • JavaScript如何实现多线程?
    我们都知道JS是一种单线程语言,即使是一些异步的事件也是在JS的主线程上运行的。像setTimeout、ajax的异步请求,或者是dom元素的一些事件,都是在JS主线程执行的,这些操作并没有......
  • golang中使用原子操作监听配置更新
    配置及代码文件{"name":"sasuke","age":25,"gender":"male","score":99.5}develop.jsonpackagemainimport("crypto/md5""enco......
  • Java线程创建形式 Thread构造详解 多线程中篇(五)
    深入解读Java线程的创建本质,本文对线程的创建进行了深入的分析与解读,不同于你以往看到的绝大多数线程创建文章Thread作为线程的抽象,Thread的实例用......
  • C# 调试子线程
    ​​https://www.debugease.com/csharp/756795.html​​​​https://docs.microsoft.com/zh-cn/visualstudio/debugger/walkthrough-debugging-a-multithreaded-application......
  • 线程并发编程之美
    多线程并发编程之美等待线程执行终止的join方法执行的代码publicclassMyThreadThree{publicstaticvoidmain(String[]args)throwsInterruptedException......
  • java中耗时较长解决办法----使用线程池
    @RequestMapping(value="/officeSingleToOfdByFileId",method=RequestMethod.POST)publicResponseDataofficeSingleToOfdByFileId(HttpServletRequestreques......