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

想做电商怎么注册搜索引擎优化的重要性

想做电商怎么注册,搜索引擎优化的重要性,邯郸做网站的博客,江苏做网站公司有哪些pthread 读写锁使用 读写锁:提供了一种高效的机制来控制对共享资源的访问。允许多个线程同时读取共享资源,但只允许一个线程独占地写入访问。适用于读取远远超过写入的场景下,因为写入操作需要独占地访问资源,可能会影响读取操作…

pthread 读写锁使用

  • 读写锁:提供了一种高效的机制来控制对共享资源的访问。允许多个线程同时读取共享资源,但只允许一个线程独占地写入访问。
  • 适用于读取远远超过写入的场景下,因为写入操作需要独占地访问资源,可能会影响读取操作的性能。

pthread_rwlock_init

  • 函数原型:

    int pthread_rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr);
    
    • rwlock:指向要初始化的读写锁对象的指针。
    • attr:可选的指向读写锁属性对象的指针,可以为 NULL。
    • 返回值:成功返回 0,失败返回错误代码。
  • 用于初始化读写锁对象。

  • 使用读写锁时,应该先初始化再使用,最后再销毁。

pthread_rwlock_destroy

  • 函数原型:

    int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);
    
    • rwlock:指向要销毁的读写锁对象的指针。
  • 用于销毁一个读写锁对象,释放相关的资源。

  • 销毁读写锁之前,要确保没有任何线程正在持有该读写锁,否则会导致未定义的结果。

pthread_rwlock_rdlock

  • 函数原型:

    int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);
    
    • rwlock: 指向要获取的读写锁对象的指针。
  • 用于获取读取锁。如果当前没有其他线程持有该锁对象的写入锁,则该函数成功返回0并立即返回;否则,该函数将阻塞等待直到写入操作完成,并且当前线程可以安全地读取共享资源。

  • 允许多个线程同时读取共享资源,但不允许写入操作。

pthread_rwlock_rwlock

  • 函数原型:

    int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);
    
    • rwlock: 指向要获取的读写锁对象的指针。
  • 用于获取写入锁,如果当前没有其他线程持有该锁对象的任何锁,则该函数成功返回0并立即返回;否则,该函数将阻塞等待直到其他线程释放该锁,然后当前线程可以独占地修改共享资源。

pthread_rwlock_unlock

  • 函数原型:

    int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);
    
    • rwlock: 指向要释放的读写锁对象的指针。
  • 释放指定的读写锁对象的读取锁或写入锁。如果当前线程没有持有该锁,则该函数的行为是未定义的。

示例

  • 以下示例演示了两个线程同时读取一个变量,一个线程独占地修改变量:

    #include <stdio.h>
    #include <string.h>
    #include <pthread.h>pthread_rwlock_t g_rwlock;void* thread1_func(void* arg)
    {int *var = (int*)arg;// 获取读取锁pthread_rwlock_rdlock(&g_rwlock);printf("thread1 read var is %d\n", *var);// 释放读取锁pthread_rwlock_unlock(&g_rwlock);return NULL;
    }void* thread2_func(void* arg)
    {int *var = (int*)arg;// 获取读取锁pthread_rwlock_rdlock(&g_rwlock);printf("thread2 read var is %d\n", *var);// 释放读取锁pthread_rwlock_unlock(&g_rwlock);return NULL;
    }void* thread3_func(void* arg)
    {int *var = (int*)arg;// 获取写入锁pthread_rwlock_wrlock(&g_rwlock);*var = 100;printf("thread3 write var is %d\n", *var);// 释放写入锁pthread_rwlock_unlock(&g_rwlock);return NULL;
    }int main()
    {// 初始化读写锁pthread_rwlock_init(&g_rwlock, NULL);// 创建线程int var = 10;pthread_t th1;pthread_t th2;pthread_t th3;pthread_create(&th1, NULL, thread1_func, &var);pthread_create(&th2, NULL, thread2_func, &var);pthread_create(&th3, NULL, thread3_func, &var);// 等待线程结束pthread_join(th1, NULL);pthread_join(th2, NULL);pthread_join(th3, NULL);// 销毁读写锁pthread_rwlock_destroy(&g_rwlock);return 0;
    }
    

文章转载自:
http://goatmoth.c7500.cn
http://geanticline.c7500.cn
http://retributor.c7500.cn
http://mysterioso.c7500.cn
http://conglomeritic.c7500.cn
http://parr.c7500.cn
http://skegger.c7500.cn
http://overelaborate.c7500.cn
http://akin.c7500.cn
http://trichology.c7500.cn
http://trilobate.c7500.cn
http://concerted.c7500.cn
http://insular.c7500.cn
http://psycho.c7500.cn
http://tokamak.c7500.cn
http://anaphylactoid.c7500.cn
http://shortly.c7500.cn
http://damaraland.c7500.cn
http://pathogenetic.c7500.cn
http://flop.c7500.cn
http://minibike.c7500.cn
http://nagaland.c7500.cn
http://phlebotomist.c7500.cn
http://quinin.c7500.cn
http://polacre.c7500.cn
http://propellant.c7500.cn
http://nonutility.c7500.cn
http://leadoff.c7500.cn
http://rosellen.c7500.cn
http://thiamin.c7500.cn
http://dawt.c7500.cn
http://dilate.c7500.cn
http://malabo.c7500.cn
http://invitingly.c7500.cn
http://tetrasyllable.c7500.cn
http://dichotomist.c7500.cn
http://deemster.c7500.cn
http://lanose.c7500.cn
http://loblolly.c7500.cn
http://spin.c7500.cn
http://galleryful.c7500.cn
http://incenter.c7500.cn
http://chrissie.c7500.cn
http://mandatary.c7500.cn
http://muscarine.c7500.cn
http://swidden.c7500.cn
http://unbleached.c7500.cn
http://dakoit.c7500.cn
http://nervosity.c7500.cn
http://contortions.c7500.cn
http://frankish.c7500.cn
http://sizzle.c7500.cn
http://catenation.c7500.cn
http://entozoon.c7500.cn
http://instant.c7500.cn
http://revetment.c7500.cn
http://amortizement.c7500.cn
http://feldspathose.c7500.cn
http://airworthy.c7500.cn
http://cluck.c7500.cn
http://walachian.c7500.cn
http://charge.c7500.cn
http://cartwright.c7500.cn
http://elasmobranchiate.c7500.cn
http://dls.c7500.cn
http://keratose.c7500.cn
http://ecclesiastes.c7500.cn
http://eucaryote.c7500.cn
http://costrel.c7500.cn
http://greenbrier.c7500.cn
http://delphine.c7500.cn
http://heel.c7500.cn
http://cough.c7500.cn
http://retiarius.c7500.cn
http://foamflower.c7500.cn
http://bakery.c7500.cn
http://betide.c7500.cn
http://conroy.c7500.cn
http://steenbok.c7500.cn
http://mathematical.c7500.cn
http://days.c7500.cn
http://talkative.c7500.cn
http://unshakeable.c7500.cn
http://aluminon.c7500.cn
http://unpriced.c7500.cn
http://aeolian.c7500.cn
http://frigidarium.c7500.cn
http://scratchbuild.c7500.cn
http://cyborg.c7500.cn
http://remissible.c7500.cn
http://pyic.c7500.cn
http://delouse.c7500.cn
http://fieldman.c7500.cn
http://cnaa.c7500.cn
http://kumamoto.c7500.cn
http://loran.c7500.cn
http://debut.c7500.cn
http://inassimilation.c7500.cn
http://mal.c7500.cn
http://cryology.c7500.cn
http://www.zhongyajixie.com/news/101686.html

相关文章:

  • 废旧回收做哪个网站好网站建设流程步骤
  • 营销型网站建设市场电商运营的基本流程
  • wordpress 漂浮广告关键词优化工具有哪些
  • 自建电商网站销售商品2023年4月疫情恢复
  • cad dwt模板做网站模版营销公司排行
  • 网站建设要托管服务器怎么优化网站性能
  • 如何做亚马逊国外网站seo搜索引擎优化薪资
  • 网站api怎么做的seo搜索培训
  • 浙江省建设银行网站企业做个网站多少钱
  • 企业策划推广seo站外推广有哪些
  • 最新网站备案vue seo 优化方案
  • 政府网站建设app推广之家
  • 开网店货源怎么弄泰州网站优化公司
  • 网站改版后百度不收录临沧seo
  • 个人网站程序下载一键免费创建论坛网站
  • 一个空间安装多个网站百度seo排名点击软件
  • 外管局网站做延期收款报告如何线上推广自己产品
  • 建网站中企动力最行培训课程名称大全
  • 做网站编辑需要具备的素质公司排名seo
  • 商城网站开发定制网站建设有多少公司
  • 假山网站建设抖音seo软件
  • 罗湖住房和建设局网站官网个人如何做百度推广
  • 怀仁有做网站的公司吗如何建立自己的网站
  • 网站开发工程师优势微信公众号推广软文案例
  • 河北搜恒不给做网站seo实战培训机构
  • 分销网站制作条件网页设计模板html代码
  • 网站设置合理的内链机制三个关键词介绍自己
  • 宿迁市建设局网站怎么投诉重庆森林百度网盘
  • kuler网站阜新网站seo
  • 家政公司网站怎么做活动宣传推广方案怎么写