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

    文章

    6508

    浏览量

    87552
  • 线程
    +关注

    关注

    0

    文章

    487

    浏览量

    19483
收藏 人收藏

    评论

    相关推荐

    多线程编程之四 线程同步

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

    Linux多线程线程同步

    pthread_mutex_lock先加锁,操作完之后pthread_mutex_unlock再解锁。5、线程同步条件变量:使用条件变量可以以原子方式阻塞
    发表于 12-08 14:14

    Python多线程编程运行【python简单入门】

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

    Python多线程编程原理

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

    基于TCP/IP协议的多线程通信的基本方法

    本文给出了一在Windows NT下基于TCP/IP协议的多线程通信的基本方法,根据该方法进行修改和扩充,便可设计出符合具体应用的高质量的多线程
    发表于 02-04 07:08

    python创建多线程两种方法

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

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

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

    QNX环境下多线程编程

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

    Linux多线程同步方法

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

    java多线程同步方法

    操作,一个取100块,一个存钱100块。假设账户原本有0块,如果取钱线程和存钱线程同时发生,会出现什么结果呢?取钱不成功,账户余额是100.取钱成功了,账户余额是0.那到底是哪个呢?很难说清楚。因此
    发表于 09-27 13:19 0次下载

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

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

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

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

    多线程同步的几种方法

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

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

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

    java实现多线程的几种方式

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