美文网首页
多线程同步

多线程同步

作者: 圣地亚哥_SVIP | 来源:发表于2020-05-19 14:38 被阅读0次

目的:

  • 多个线程同时运行
  • 指定线程在其余线程执行完毕后继续执行

原理:

  • 利用变量进行同步,变量的操作需要具有线程安全
  • 使用std::atomic的原子性操作进行同步
  • 只有当一变量变成指定值时,在运行最后的线程
  • 如下,atomic<int> ++、load、store均是原子操作

代码如下:



#include <atomic>
#include <iostream>
#include <pthread.h>

std::atomic<int> test;

void* thread1(void* t){

    pthread_t tid = pthread_self();
    printf("Thread Before: %d\n",tid);
    test++;
    return NULL;
}

void* thread2(void* t){
  
  while(test.load( std::memory_order_acquire ) < 3);
  printf("Thread End\n");
  return NULL;

}

int main(int argc,char *argv[]){
  
  pthread_t threads[4];
  test.store(0,std::memory_order_release);
  pthread_create(&threads[0],NULL,thread2,NULL);
  for (int i=1;i<4;++i){
    int r = pthread_create(&threads[i],NULL,thread1,NULL);
  }

  for (int i=0;i<4;++i){
    pthread_join(threads[i],NULL);
  }

}

相关文章

  • 起底多线程同步锁(iOS)

    起底多线程同步锁(iOS) 起底多线程同步锁(iOS)

  • iOS线程同步

    线程同步 提到多线程大家肯定会提到锁,其实真正应该说的是多线程同步,锁只是多线程同步的一部分。 多线程对于数据处理...

  • python防遗忘复习练手之:多线程

    多线程 线程同步

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

  • iOS 多线程基础

    转自:iOS 多线程基础 - 简书 多线程同步和异步的区别?IOS中如何实现多线程的同步? 异步:可以同时执行多条...

  • OpenMP多线程——Parallel for

    多线程——线程同步 数据竞争问题 线程互斥同步——critical 线程互斥同步——atmoic 线程互斥同步——...

  • 锁与多线程同步的实现

    Java当中的锁都是为了保证多线程同步执行。如果没有锁的话,多线程是异步执行的。 什么是多线程同步? 请看下面的代...

  • iOS中的锁

    起底多线程同步锁(iOS) OSSpinLock NSLock NSRecursiveLock 同步 NSCond...

  • iOS_2016最新版面试题(附答案)

    每天四道题,让精彩填满生活... 1、多线程同步和异步的区别。iOS如何实现多线程的同步? 答:同步就是指一个线程...

  • iOS Condition

    condition实现多线程的同步用法:

网友评论

      本文标题:多线程同步

      本文链接:https://www.haomeiwen.com/subject/zxrbohtx.html