华为云国际站代理商充值:c语言 线程间通信

C语言中线程间通信的方式有多种,以下是几种常用的方法:

  1. 全局变量和互斥锁(Mutex)
    使用全局变量来存储线程之间共享的数据,并使用互斥锁来确保对共享数据的互斥访问。

    #include <pthread.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int shared_data = 0;
    pthread_mutex_t lock;
    
    void *thread_func(void *arg) {
        pthread_mutex_lock(&lock);
        shared_data++;
        printf("Thread %d: %dn", *(int *)arg, shared_data);
        pthread_mutex_unlock(&lock);
        return NULL;
    }
    
    int main() {
        pthread_t threads[2];
        int thread_ids[2] = {1, 2};
    
        pthread_mutex_init(&lock, NULL);
    
        for (int i = 0; i < 2; i++) {
            pthread_create(&threads[i], NULL, thread_func, &thread_ids[i]);
        }
    
        for (int i = 0; i < 2; i++) {
            pthread_join(threads[i], NULL);
        }
    
        pthread_mutex_destroy(&lock);
        return 0;
    }
  2. 条件变量(Condition Variable)
    条件变量可以用来让一个线程等待另一个线程发出某个信号,以实现线程间的同步。

    #include <pthread.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int ready = 0;
    pthread_mutex_t lock;
    pthread_cond_t cond;
    
    void *thread_func(void *arg) {
        pthread_mutex_lock(&lock);
        while (!ready) {
            pthread_cond_wait(&cond, &lock);
        }
        printf("Thread %d is runningn", *(int *)arg);
        pthread_mutex_unlock(&lock);
        return NULL;
    }
    
    int main() {
        pthread_t threads[2];
        int thread_ids[2] = {1, 2};
    
        pthread_mutex_init(&lock, NULL);
        pthread_cond_init(&cond, NULL);
    
        for (int i = 0; i < 2; i++) {
            pthread_create(&threads[i], NULL, thread_func, &thread_ids[i]);
        }
    
        sleep(1); // 模拟一些操作
        pthread_mutex_lock(&lock);
        ready = 1;
        pthread_cond_broadcast(&cond);
        pthread_mutex_unlock(&lock);
    
        for (int i = 0; i < 2; i++) {
            pthread_join(threads[i], NULL);
        }
    
        pthread_mutex_destroy(&lock);
        pthread_cond_destroy(&cond);
        return 0;
    }
  3. 信号量(Semaphore)
    信号量可以用来控制对共享资源的访问。

    #include <pthread.h>
    #include <semaphore.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    sem_t sem;
    
    void *thread_func(void *arg) {
        sem_wait(&sem);
        printf("Thread %d is runningn", *(int *)arg);
        sem_post(&sem);
        return NULL;
    }
    
    int main() {
        pthread_t threads[2];
        int thread_ids[2] = {1, 2};
    
        sem_init(&sem, 0, 1);
    
        for (int i = 0; i < 2; i++) {
            pthread_create(&threads[i], NULL, thread_func, &thread_ids[i]);
        }
    
        for (int i = 0; i < 2; i++) {
            pthread_join(threads[i], NULL);
        }
    
        sem_destroy(&sem);
        return 0;
    }

这三种方法是C语言中常用的线程间通信方式,每种方法都有其适用的场景和优缺点,具体选择哪种方法需要根据具体的应用需求来决定。

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/192679.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年7月24日 20:45
下一篇 2024年7月24日 20:53

相关推荐

  • 嘉兴华为云代理商:安装mysql教程

    以嘉兴华为云代理商:安装mysql教程 华为云的优势 华为云是中国领先的云计算服务提供商,拥有先进的技术和强大的数据中心。华为云的优势包括: 高安全性:华为云采用多层次安全防护体系,保障用户数据不受恶意攻击。 高可靠性:华为云的数据中心分布在全球各地,可实现地域容灾和数据备份,保障业务可靠性。 高性能:华为云配备了强大的计算资源和网络带宽,可满足企业高并发和…

    2024年3月15日
    46900
  • 华为云国际站代理商:湖州网站优化

    华为云国际站代理商:湖州网站优化的关键助力 一、引言:数字化转型浪潮下的网站优化需求 在数字化经济蓬勃发展的今天,企业网站作为品牌展示和业务拓展的重要窗口,其性能与用户体验直接影响商业转化。湖州作为长三角经济圈的重要城市,众多企业正积极寻求通过网站优化提升竞争力。作为华为云国际站代理商,我们深知云计算基础设施对网站优化的核心价值,华为云凭借其全球化布局和技术…

    2025年12月2日
    20700
  • 华为云代理商:佛山网站建设服务公司

    华为云代理商:佛山网站建设服务公司 在当今数字化时代,网站建设已经成为企业发展的重要环节之一。而选择可靠的云服务供应商更是确保网站稳定、安全、高效运行的关键。佛山网站建设服务公司作为华为云的代理商,提供全面的网站建设与云计算解决方案,帮助企业实现快速上线、稳定运营和高效管理。本文将详细探讨佛山网站建设服务公司如何借助华为云的优势,为客户提供优质的网站建设服务…

    2024年9月18日
    54000
  • 华为云代理商:cdn自建对象存储

    华为云代理商:CDN自建对象存储 引言 在当今数字化快速发展的时代,云计算作为信息技术的重要变革推手,不仅为企业提供了灵活的IT基础设施,也加速了信息传输和数据处理的效率。华为云作为全球领先的云服务提供商之一,通过其先进的技术和全面的服务,为企业提供了多种解决方案,其中包括CDN自建对象存储服务。 CDN自建对象存储的定义与优势 CDN自建对象存储是指企业基…

    2025年3月27日
    39100
  • 华为云国际站代理商注册:ftp服务器端程序设计

    华为云国际站代理商注册与FTP服务器端程序设计涉及到不同的领域。首先,我们可以简单介绍一下这两个概念,并提供一些基础信息和参考方向。 华为云国际站代理商注册 华为云为企业及开发者提供全球化的云服务。成为华为云的代理商通常包括以下几个步骤: 信息收集与认证 访问华为云官方网站,了解代理商政策,通常需要公司营业执照、税务登记证等。 填写申请表 提交企业信息表和税…

    2024年5月13日
    50400

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/