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

网站套餐方案谷歌seo招聘

网站套餐方案,谷歌seo招聘,成都j网站制作,2003网站建设只能用来解决同步问题&#xff0c;且不能独立使用&#xff0c;必须配合互斥锁一起用 头文件&#xff1a;#include <pthread.h> 类型&#xff1a;pthread_cond_t PTHREAD_COND_INITIALIZER 初始化 初始化&#xff1a;int pthread_cond_init(pthread_cond_t * cond, NULL);…

只能用来解决同步问题,且不能独立使用,必须配合互斥锁一起用


头文件:#include <pthread.h>
类型:pthread_cond_t
PTHREAD_COND_INITIALIZER 初始化
初始化:int pthread_cond_init(pthread_cond_t * cond, NULL);
清理:int pthread_cond_destroy(pthread_cond_t * cond);
P操作: int pthread_cond_wait(pthread_cond_t * cond, pthread_mutex_t *mutex);//mutex必须是pthread_mutex_lock返回后的
V操作: int pthread_cond_signal(pthread_cond_t * cond);//只是出队任务等待队列中的第一个任务,让该任务正在阻塞的P操作返回
V操作: int pthread_cond_broadcast(pthread_cond_t * cond);//出队任务等待队列中的所有任务,让所有正阻塞的任务的P操作返回功能:见函数名
返回值:成功0,失败错误码
mutex为已经处于锁状态的互斥锁,因此条件变量必须与一个互斥量配合使用


代码模板:

代码模板:
pthread_cond_t cond;
pthread_mutex_t lock;程序开始时:
pthread_mutex_init(&lock,NULL);
pthread_cond_init(&cond,NULL);程序结束前:
pthread_mutex_destroy(&lock);
pthread_cond_destroy(&cond);A线程为先做线程
pthread_mutex_lock(&lock);
....
pthread_mutex_unlock(&lock);
pthread_cond_signal(&cond);B线程为后做线程
pthread_mutex_lock(&lock);
if(条件表达式为真)
{pthread_cond_wait(&cond,&lock);
}
.....
pthread_mutex_unlock(&lock);

生产者消费者模型(生产者生产出来东西后消费者才能执行)

问题:设计程序,一个线程实现入队操作,另一个实现出队操作, 如果队列中没有数据,出队线程不参与资源的竞争.(条件变量)
代码:
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <assert.h>
#include <unistd.h>#if  0
条件变量在生产者消费者模型中使用步骤:
1、定义条件变量和互斥锁,并初始化消费者线程:
1、加锁int pthread_mutex_lock(pthread_mutex_t *mutex);2、判断公共资源中是否有数据
while(公共资源中没有数据成立)
{//造成线程的阻塞,在阻塞之前进行解锁//被唤醒后,申请加锁int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);}3、如果公共资源中有数据, 消费数据4、解锁
int pthread_mutex_unlock(pthread_mutex_t *mutex);生产者线程:
1、加锁int pthread_mutex_lock(pthread_mutex_t *mutex);2、生产数据, 并放到公共资源中3、解锁
int pthread_mutex_unlock(pthread_mutex_t *mutex);4、发送信号给条件变量, 唤醒所有阻塞在条件变量上的线程int pthread_cond_signal(pthread_cond_t *cond);#endifstruct  node{int data;struct node *next;
};pthread_cond_t cond = PTHREAD_COND_INITIALIZER; // 初始化cond条件变量
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 初始化mutex锁struct node *head = NULL;//生产者线程
void* product(void* argv){struct node *pnew = NULL;// sleep(10);while(1){pnew = malloc(sizeof(struct node));assert(pnew != NULL);pnew->data = rand();pnew->next = NULL;printf("========product: %d\n", pnew->data);pthread_mutex_lock(&mutex); // 上锁pnew->next = head;head = pnew;pthread_mutex_unlock(&mutex); // 解锁pthread_cond_signal(&cond); // 发出信号sleep(1);}return NULL;
}//消费者线程
void*  consumer(void* argv){struct node *pdel = NULL;while(1){pthread_mutex_lock(&mutex); // 上锁while(NULL == head){ // 判断条件是否满足printf("wait..\n");pthread_cond_wait(&cond, &mutex); // 解锁等待,条件满足后再上锁printf("wait  over...\n");}printf("------->consumer: %d\n", head->data);pdel = head;head = head->next;free(pdel);pthread_mutex_unlock(&mutex); // 解锁sleep(1);}return NULL;
}int main(){pthread_t  pth1, pth2;if(0 != pthread_create(&pth1, NULL, product, NULL)){perror("pthread_create");return -1;}if(0 != pthread_create(&pth2, NULL, consumer, NULL)){perror("pthread_create");return -1;}pthread_join(pth1, NULL); // 回收线程pthread_join(pth2, NULL);pthread_mutex_destroy(&mutex); // 销毁锁pthread_cond_destroy(&cond); // 销毁条件变量return 0;
}

输出:

http://www.hengruixuexiao.com/news/18059.html

相关文章:

  • 如何做淘宝代购网站一份完整的活动策划方案
  • 做网站以后的趋势知乎东莞网站优化关键词排名
  • 网站建设前的市场分析优质的seo网站排名优化软件
  • 长春网站制作wang营销图片大全
  • 重庆企业网站建设哪家专业网络广告营销典型案例
  • 网上创业及网站建设实训总结如何制作一个自己的网页
  • 湖南做电商网站需要什么条件小学生简短小新闻
  • 网站建设教程吧广州关于进一步优化疫情防控措施
  • 网站设计技巧免费seo教程资源
  • 广东seo网站设计多少钱公司以优化为理由裁员合法吗
  • 网站平台建设重点难点分析b站视频未能成功转码
  • 公司手机网站效果图邵阳seo优化
  • 企业简介的网站怎么做b站视频推广怎么买
  • 百度推广账号申请seo是怎么优化的
  • 做电影网站失败软文推广渠道
  • 鞍山做网站公司互联网营销师培训课程
  • 国外效果做的好的网站推广普通话的意义是什么
  • seo整站优化更能准确获得客户搜狐三季度营收多少
  • 哪种语言做的网站好点击seo软件
  • 代理分佣后台网站开发网站新域名查询
  • 做网站哪家好产品推广软文300字
  • 松阳网站建设怎么网上推广自己的产品
  • 东软网站建设百度链接提交
  • 网站怎么做json数据库百度推广登录入口登录
  • 嘉兴免费做网站网络建站优化科技
  • 做的很好的画册网站搜索大全引擎
  • 微信公众号对接网站做东莞seo培训
  • 有做全棉坯布的网站吗找谁做百度关键词排名
  • 横栏建设网站谷歌关键词搜索排名
  • 免费自助建站排名泰州百度seo公司