当前位置: 首页 > news >正文

集团公司手机站网站报送举报网站建设情况

集团公司手机站网站,报送举报网站建设情况,建设工程合同属于什么合同,权威发布型舆情回应以事实性线程间同步机制用于协调多个线程的执行顺序,确保任务按预期顺序执行。异步执行是多线程和多进程的本质,CPU调度具有随机性。信号量是实现线程间同步的一种机制。信号量操作步骤定义信号量对象:sem_t sem;初始化信号量:sem_init(&a…

线程间同步机制用于协调多个线程的执行顺序,确保任务按预期顺序执行。异步执行是多线程和多进程的本质,CPU调度具有随机性。信号量是实现线程间同步的一种机制。

信号量操作步骤

定义信号量对象:

sem_t sem;

初始化信号量:

sem_init(&sem, 0, 1);  // 初始值为1,线程间共享

PV操作:

     P操作(申请信号量):

sem_wait(&sem);  // 申请信号量

       V操作(释放信号量):

    sem_post(&sem);  // 释放信号量
    

    销毁信号量:

    sem_destroy(&sem);
    

    函数接口说明

    初始化信号量:

    int sem_init(sem_t *sem, int pshared, unsigned int value);
    

        sem:信号量对象地址

        pshared:0表示线程间共享,非0表示进程间共享

       value:信号量初始值

    申请信号量:

    int sem_wait(sem_t *sem);
    

    释放信号量:

    int sem_post(sem_t *sem);
    

    销毁信号量:

    int sem_destroy(sem_t *sem);
    

    死锁与解决方法

    死锁是多线程环境中因资源竞争导致的永久等待状态。产生死锁的四个必要条件:

    1. 互斥条件:资源每次只能被一个线程使用
    2. 请求与保持条件:线程持有资源并请求其他资源
    3. 不剥夺条件:线程持有的资源不能被强制释放
    4. 循环等待条件:多个线程形成循环等待资源链

    解决方法

            锁成对出现

            统一加锁顺序

            破坏循环等待条件

            使用非阻塞锁

    进程间通信(IPC)

    进程间通信因空间独立而需要特殊机制。通信方式分为同一主机和不同主机两类。

    同一主机通信方式

    1. 古老通信方式
      • 无名管道
      • 有名管道
      • 信号
    2. IPC对象通信
      • 共享内存
      • 消息队列
      • 信号量集

    不同主机通信方式

            Socket通信

    无名管道操作 创建管道:

    int pipe(int pipefd[2]);
    

        pipefd[0]为读端,pipefd[1]为写端

      读写操作:

      write(pipefd[1], buf, len);  // 写管道
      read(pipefd[0], buf, len);   // 读管道
      

      关闭管道:

      close(pipefd[0]);  // 关闭读端
      close(pipefd[1]);  // 关闭写端
      

      有名管道操作 创建管道文件:

      int mkfifo(const char *pathname, mode_t mode);
      

         pathname:管道文件名称

         mode:文件权限

      打开和读写:

      int fd = open(pathname, O_RDWR);  // 打开管道
      write(fd, buf, len);              // 写管道
      read(fd, buf, len);               // 读管道
      close(fd);                        // 关闭管道
      

      删除管道文件:

      remove(pathname);
      

      ips:1.代码编写时,注意的事项。

      高内聚:增强代码的复用性。

      低耦合:设计程序时,模块与模块之间(函数与函数之间)的关联度要低。

      2.代码设计时,注意的事项。

      开闭原则:对增加开放,对修改关闭。

      3.互斥锁在全局变量初始化时,可以使用系统中的一个宏

      4.void *memset(void *s, int c, size_t n);

              功能:将内存区域填充成指定的数据

              参数:

                      s:要填充的空间首地址

                      c:要填充的地址

                      n:要填充的字节数

              返回值

                      成功:返回s的首地址

                      失败:NULL

      5.单工:广播(管道)

      半双工:对讲机

      全双工:打电话
      ————————————————

                                  版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

      原文链接:https://blog.csdn.net/weixin_72612809/article/details/150484626

      http://www.dtcms.com/a/553734.html

      相关文章:

    • 【Spring Boot】Spring AOP动态代理,以及静态
    • 使用Requests和正则表达式实现网络小说爬取技术解析
    • spine动画监听动作播放完成重复执行
    • ui设计网站开发乡村建设的网站
    • 最新版 dify 如何离线安装插件
    • html网站的直播怎么做绵阳个人网站建设
    • 苯乙烯自由基聚合与丙交酯开环聚合的MATLAB模拟
    • 从一到无穷大 #53 Beyond TSDB Query performance: Homomorphic Compression
    • 张掖建设网站眉山市建设局网站
    • Android和springboot的后端json数据库mysql传送
    • 旅游网站系统商标购买网商标
    • 好用的 display: flow-root
    • 做路牌的网站深圳做外贸网站公司
    • C++笔记(面向对象)多重继承 菱形继承
    • 淘宝商品详情 API(taobao.item.get)从 0 到 1:申请流程、核心参数与首次调用实战
    • 大连市建设部网站官网权威的网站建设公司
    • 【Day 83】虚拟化-openstack
    • C语言类型转换和溢出常见错误
    • 《计算类云服务》
    • CentOS7 搭建DHCP服务器(一台服务器虚拟机+2台客户端虚拟机演示)
    • 【MySQL】mysqldump使用方法
    • Docker化你的Python应用:从开发到生产
    • 做网站需要多少兆空间安徽网站优化好不好
    • 【weblogic】协议反序列化漏洞
    • LeetCode 287. 寻找重复数
    • C#理论学习-WinForm实践开发教程总结
    • 深入浅出 ES Module
    • 深度学习专题:模型训练的数据并行(二)
    • 企业网站建设方案新闻网站购买域名
    • C++ STL 有序关联容器高频面试题解析