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

网站为什么要seo?农村做网站开发

网站为什么要seo?,农村做网站开发,南通网站定制企业,成都智科达实验室设备有限公司信号量 (1)What(什么是信号量) 提供一种计数器的方式控制对共享资源的访问;当计数器大于0时,请求资源成功并计数器-1;当计数器小于0时,线程阻塞,等待其它线程执行signal(V操作&…

信号量

(1)What(什么是信号量)

提供一种计数器的方式控制对共享资源的访问;当计数器大于0时,请求资源成功并计数器-1;当计数器小于0时,线程阻塞,等待其它线程执行signal(V操作)唤醒它

(2)Why(信号量的作用)

  • 实现线程的同步与互斥:通过信号量的设计,可以实现对共享资源的串行访问
  • 实现线程的等待与通知机制:当信号量小于0时,当前线程将被阻塞;当信号量大于0时,会唤醒一个阻塞在信号量上的线程

(3)How(如何使用信号量实现线程同步)

step01:创建信号量

可以看作是创建一个信号量对象

sem_t sem; 

step02:初始化信号量

可以看作是对信号量对象的一个初始化,这一过程会给信号量的计数器赋予一个初始值

int sem_init(sem_t *sem, int pshared, unsigned int value); 
  • 参数sem:被初始化的信号量对象
  • 参数pshared:默认为0,表示信号量用于线程同步;其它表示信号量用于进程同步
  • 参数value:表示信号量的数量,常用用于表示共享资源的数量
  • 返回值:成功返回0,失败返回-1,并设置错误码

step03:请求资源

请求获取共享资源,此时信号量的计数器减1;如果信号量小于1,请求失败,线程阻塞,直到信号量满足条件时解除阻塞

int sem_wait(sem_t *sem); 
  • 参数sem:请求共享资源,如果sem中的计数器大于0,则请求成功,否则线程阻塞
  • 返回值:成功返回0,失败返回-1,并设置错误码

step04:释放资源

释放共享资源,此时信号量的计数器加1,此时会唤醒一个等待该共享资源的线程

int sem_post(sem_t *sem);

  • 参数sem:释放共享资源,sem中的计数器+1
  • 返回值:成功返回0,失败返回-1,并设置错误码
    step05:销毁信号量

本质就是释放信号量对象的内存空间

int sem_destroy(sem_t *sem); 
  • 参数sem:将要被销毁的信号量对象
  • 返回值:成功返回0,失败返回-1,并设置错误码

(4)代码实例

以下代码是对共享资源的互斥访问,共享资源的个数为5

#include <semaphore.h>
#include <unistd.h>
#include <iostream>
#include <pthread.h>
using namespace std;
pthread_mutex_t mutex;
sem_t semProc;
sem_t semComu;
struct Node{int iVal;Node * ptrNext;static int iSize;
};
int Node::iSize = 0;
Node * head = NULL;
void *produce(void  *arg){int i = 0;while(1){sem_wait(&semProc);pthread_mutex_lock(&mutex);int iVal = i;Node *node = new Node;node->iVal = iVal;node->ptrNext = head->ptrNext;head->ptrNext = node;Node::iSize++;cout<<"Producing "<<iVal<<"("<<Node::iSize<<")"<<endl;pthread_mutex_unlock(&mutex);sem_post(&semComu);++i;sleep(1);}
}
void *consume(void *arg){while(1){sem_wait(&semComu);pthread_mutex_lock(&mutex);if(head->ptrNext!=NULL){cout<<"Comsuing "<<head->ptrNext->iVal;Node *ptr = head->ptrNext;head->ptrNext = ptr->ptrNext;Node::iSize--;delete ptr;cout<<"("<<Node::iSize<<")"<<endl;ptr = 0;}pthread_mutex_unlock(&mutex);sem_post(&semProc);sleep(2);return NULL; 
}
int main()
{head = new Node; pthread_t tidProc,  tidComu; sem_init(&semProc, 0, 5); sem_init(&semComu, 0, 0); pthread_create(&tidProc,  NULL,  produce,  NULL); pthread_create(&tidComu, NULL, conmuse, NULL); pthread_join(tidProc, NULL); pthread_join(tidComu, NULL); return 0; 
}
http://www.yayakq.cn/news/318520/

相关文章:

  • 万网的网站建设好吗中国建设银行u盾官方网站
  • 阿里云网站建设优化做app推广去哪找商家
  • 配件查询网站制作网站建设及运营服务流程
  • 新闻头条 今天seo排名赚官网
  • 成都网站seo厂家a级生活片免费
  • 网站建设与运营公司财务预算百度最怕哪个投诉电话
  • 做视频投稿赚钱的网站网站建设编程语言
  • 一般网站的建设步骤有哪些小程序制作平台官网
  • 做网站杭州傲视信息淘宝网站建设的详细策划
  • 电商网站建设课件视频背景网站
  • 百度建设网站软件工程师资格证
  • 企业网站类型在ps做网站分辨率96可以吗
  • 建站科技公司php企业网站开发实验总结
  • 南漳网站设计做网站一般都用什么字体
  • 海口分类信息网站广告关键词排名
  • 网站建设企业网站界面设计头像制作免费生成器
  • 做视频采集网站犯法站长工具国产
  • 建设银行可以查房贷的网站做淘宝客的网站需要备案吗
  • 影音先锋资源网站建设网站开发会议议程范文
  • 企业网站建设费用会计科目seo关键词排名优化
  • 亳州公司做网站找项目做区域代理
  • 公司域名备案怎么弄衡阳网站优化
  • 松江品划网络做网站阿里云网站建设考试题目
  • 吉林网站建设哪家有灰色行业关键词优化
  • 青岛红岛做网站花儿直播免费视频观看
  • 网站开发合同属于知识产权类吗要怎么做网络推广
  • 服务营销案例小程序定制 seo营销
  • 哪个做简历的网站可以中英的推广型网站建设
  • 门户网站是用户上网的第一入口百度移动端关键词优化
  • 东莞网站系统找哪里南通企业网站建设公司