0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

多线程两种同步方式的操作方法分析

电子设计 来源:电子工程网 作者:张骏 2021-06-26 14:57 次阅读

在线程对共享相同内存操作时,就会出现多个线程对同一资源的使用,为此,需要对这些线程进行同步,以确保它们在访问共享内存的时候不会访问到无效的数值。

以下是线程的几种同步方式:

1、 互斥量。

通过使用pthread的互斥接口保护数据,确保同一时间只有一个线程访问数据。互斥量从本质上讲是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。如下例所示,就是互斥量对共享数据的操作:

}

2、信号

该信号量是Posix提供的基于内存的信号量,它们由应用程序分配信号量的内存空间。如下例所示,就是信号量对共享数据的操作:

#include

#include

#include

int value = 5;

sem_t sem1,sem2;

void mainshow();

void *mythread();

int main()

{

int retval;

pthread_t tid;

retval = sem_init(&sem1,0,0);

retval = sem_init(&sem2,0,1);

retval =pthread_create(&tid,NULL,mythread,NULL);

mainshow();

pthread_join(tid,NULL);

printf(“value3 = %d\n”,value);

return 0;

}

void *mythread()

{

int retval;

retval = sem_wait(&sem1);

value = value + 1;

printf(“value1 = %d\n”,value);

retval = sem_post(&sem2);

pthread_exit((void *) 0);

}

void mainshow()

{

int retval;

retval = sem_wait(&sem2);

value = value + 1;

printf(“value2 = %d\n”,value);

retval = sem_post(&sem1);

}

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6639

    浏览量

    87994
  • 线程
    +关注

    关注

    0

    文章

    497

    浏览量

    19557
收藏 人收藏

    评论

    相关推荐

    Rust的多线程编程概念和使用方法

    和字段、常见用法以及多线程的一些实践经验。由浅入深带你零基础玩转Rust的多线程编程。 线程的基本概念和使用方法 Thread是Rust中并发编程的一
    的头像 发表于 09-20 11:15 654次阅读

    多线程编程之四 线程同步

    多线程编程之四 线程同步八、线程同步  虽然多线程能给我们带来好处,但是也有不少问题需要解决
    发表于 10-22 11:43

    Python多线程编程原理

    多线程使用方法Python中使用线程两种方式,分别是函数或者用类来包装线程对象。用函数来包装
    发表于 11-22 14:01

    python创建多线程两种方法

    MING3. 线程对象的方法上面介绍了当前 Python 中创建线程两种主要方法。创建线程是件
    发表于 03-15 16:47

    如何使用多线程和异步操作等并发设计方法来最大化程序的性能

    (超线程、双核)的普及,多线程和异步操作等并发程序设计方法也受到了更多的关注和讨论。本文主要是想探讨一下如何使用并发来最大化程序的性能。  多线程
    发表于 08-23 16:31

    QNX环境下多线程编程

    介绍了QNX 实时操作系统和多线程编程威廉希尔官方网站 ,包括线程同步方法多线程程序的
    发表于 08-12 17:37 30次下载

    Linux多线程同步方法

    线程对共享相同内存操作时,就会出现多个线程对同一资源的使用,为此,需要对这些线程进行同步,以确保它们在访问共享内存的时候不会访问到无效
    发表于 08-08 14:17 2005次阅读

    设计多线程和多核系统

    如果您的微控制器应用程序需要处理数字音频,请考虑采用多线程方法。使用多线程设计方法可以使设计者以简单的方式重用其部分设计。
    发表于 08-14 15:42 9次下载
    设计<b class='flag-5'>多线程</b>和多核系统

    java多线程同步方法

    二、为什么要线程同步 因为当我们有多个线程要同时访问一个变量或对象时,如果这些线程中既有读又有写操作时,就会导致变量值或对象的状态出现混乱,
    发表于 09-27 13:19 0次下载

    多线程好还是单线程好?单线程多线程的区别 优缺点分析

    摘要:如今单线程多线程已经得到普遍运用,那么到底多线程好还是单线程好呢?单线程多线程的区别又
    发表于 12-08 09:33 8.1w次阅读

    Linux中的常用多线程同步方式浅析

    嵌入式linux中文站给大家介绍三Linux中的常用多线程同步方式:互斥量,条件变量,信号量。
    发表于 05-02 14:49 2948次阅读
    三<b class='flag-5'>种</b>Linux中的常用<b class='flag-5'>多线程</b><b class='flag-5'>同步</b><b class='flag-5'>方式</b>浅析

    python创建多线程两种方法

    1. 用函数创建多线程 在Python3中,Python提供了一个内置模块 threading.Thread ,可以很方便地让我们创建多线程。 threading.Thread() 一般接收个参数
    的头像 发表于 03-15 16:47 5154次阅读

    多线程同步的几种方法

    多线程同步是指在多个线程并发执行的情况下,为了保证线程执行的正确性和一致性,需要采用特定的方法来协调线程
    的头像 发表于 11-17 14:16 753次阅读

    多线程如何保证数据的同步

    多线程编程是一并发编程的方法,意味着程序中同时运行多个线程,每个线程可独立执行不同的任务,共享同一份数据。由于
    的头像 发表于 11-17 14:22 580次阅读

    java实现多线程的几种方式

    Java实现多线程的几种方式 多线程是指程序中包含了个或以上的线程,每个线程都可以并行执行不同
    的头像 发表于 03-14 16:55 330次阅读