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

网站优化主要怎么做品牌传播策划方案

网站优化主要怎么做,品牌传播策划方案,成都百度爱采购,手机做网站公司一个数据问价或记录可以被多个进程共享,我们把只读该文件的进程称为“读者进程”,其他进程为“写者进程”。允许多个进程同时读一个共享对象,但不允许一个写者进程和其他写者进程或读者进程同时访问共享对象。即:保证一个写者进程…

一个数据问价或记录可以被多个进程共享,我们把只读该文件的进程称为“读者进程”,其他进程为“写者进程”。允许多个进程同时读一个共享对象,但不允许一个写者进程和其他写者进程或读者进程同时访问共享对象。即:保证一个写者进程必须与其他进程互斥的访问共享对象的同步问题;读者-写者问题常用来测试新同步原语。

1、问题解答思路

利用了锁和信号量进行同步,以确保读者和写者之间不会相互干扰地访问缓冲区。读者可以同时访问缓冲区,但写者必须具有排他性访问。ReaderWriter类包含了共享缓冲区、活跃读者数量、写入状态标志以及用于互斥访问和信号量的锁和信号量。read函数实现读者的行为。读者先获取read_sem信号量,然后获取锁,增加活跃读者数量,如果是第一个读者,就获取write_sem信号量以防止写者进入。读取缓冲区内容后,减少活跃读者数量,并在没有活跃读者时释放`write_sem`信号量。write函数实现写者的行为。写者首先获取write_sem信号量,然后获取锁,设置写入状态标志为True。写入数据到缓冲区后,释放锁并设置写入状态标志为False,最后释放write_sem信号量。最后创建了多个读者和写者线程,并启动它们。然后等待所有线程结束。

2、问题流程图

graph TD;

    A[开始] --> B[初始化ReaderWriter对象];

    B --> C[创建多个读者和写者线程];

    C --> D[启动所有线程];

    D --> E[等待所有线程结束];

    E --> F[结束];

3、源码

import threading
import time
import randomclass ReaderWriter:def __init__(self):self.buffer = [] #共享缓冲区self.readers = 0 #活跃读者数量self.writing = False #写入状态标志self.lock = threading.Lock() #互斥访问锁self.read_sem = threading.Semaphore(1)self.write_sem = threading.Semaphore(1) #信号量def read(self, reader_id):while True:self.read_sem.acquire()self.lock.acquire()self.readers += 1if self.readers == 1:self.write_sem.acquire()self.lock.release()self.read_sem.release()print(f"读者 {reader_id} 正在读: {self.buffer}")self.lock.acquire()self.readers -= 1if self.readers == 0:self.write_sem.release()self.lock.release()time.sleep(random.random())def write(self, writer_id):while True:self.write_sem.acquire()self.lock.acquire()self.writing = Trueself.lock.release()data = random.randint(1, 100)self.buffer.append(data)print(f"写者 {writer_id} 正在写: {data}")self.lock.acquire()self.writing = Falseself.write_sem.release()self.lock.release()time.sleep(random.random())def main():reader_writer = ReaderWriter()readers = []for i in range(5):reader = threading.Thread(target=reader_writer.read, args=(i,))readers.append(reader)writers = []for i in range(2):writer = threading.Thread(target=reader_writer.write, args=(i,))writers.append(writer)for reader in readers:reader.start()for writer in writers:writer.start()for reader in readers:reader.join()for writer in writers:writer.join()if __name__ == "__main__":main()

4、输出

读者 0 正在读: []
读者 1 正在读: []
读者 2 正在读: []
读者 3 正在读: []
读者 4 正在读: []
写者 0 正在写: 36
写者 1 正在写: 61
读者 1 正在读: [36, 61]
写者 0 正在写: 61
读者 1 正在读: [36, 61, 61]
写者 0 正在写: 85
读者 0 正在读: [36, 61, 61, 85]
写者 1 正在写: 69
读者 4 正在读: [36, 61, 61, 85, 69]
读者 1 正在读: [36, 61, 61, 85, 69]
读者 3 正在读: [36, 61, 61, 85, 69]
读者 2 正在读: [36, 61, 61, 85, 69]
读者 3 正在读: [36, 61, 61, 85, 69]
写者 0 正在写: 11
读者 0 正在读: [36, 61, 61, 85, 69, 11]
读者 4 正在读: [36, 61, 61, 85, 69, 11]
读者 2 正在读: [36, 61, 61, 85, 69, 11]
读者 1 正在读: [36, 61, 61, 85, 69, 11]
写者 1 正在写: 61
读者 0 正在读: [36, 61, 61, 85, 69, 11, 61]
写者 1 正在写: 61
读者 3 正在读: [36, 61, 61, 85, 69, 11, 61, 61]
读者 2 正在读: [36, 61, 61, 85, 69, 11, 61, 61]
写者 1 正在写: 19
读者 1 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19]
写者 1 正在写: 77
写者 1 正在写: 3
读者 4 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3]
写者 0 正在写: 79
读者 4 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79]
读者 0 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79]
读者 3 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79]
读者 1 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79]
读者 2 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79]
写者 1 正在写: 32
写者 1 正在写: 17
写者 0 正在写: 53
读者 1 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53]
读者 2 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53]
读者 4 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53]
读者 3 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53]
读者 0 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53]
读者 4 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53]
读者 0 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53]
写者 0 正在写: 89
写者 1 正在写: 92
读者 1 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53, 89, 92]
读者 3 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53, 89, 92]
读者 2 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53, 89, 92]
读者 2 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53, 89, 92]
读者 0 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53, 89, 92]
写者 0 正在写: 28
读者 0 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53, 89, 92, 28]
读者 0 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53, 89, 92, 28]
写者 1 正在写: 68
读者 4 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53, 89, 92, 28, 68]
读者 3 正在读: [36, 61, 61, 85, 69, 11, 61, 61, 19, 77, 3, 79, 32, 17, 53, 89, 92, 28, 68]
写者 0 正在写: 66进程已结束,退出代码-1
http://www.15wanjia.com/news/9415.html

相关文章:

  • 怎么做写真网站全自动推广引流软件
  • 石碣镇仿做网站优化网站排名工具
  • drupal 网站实例防止恶意点击软件管用吗
  • 游戏道具网站开发竞价运营是做什么的
  • 网站描述怎样写关键词密度
  • 百容千域可以免费做网站吗百度有什么办法刷排名
  • o2o商城网站建设供应广告推销网站
  • 现在个人做网站或者app还有收益网站域名ip查询
  • 网站开发 顺德腾讯广告投放平台
  • 网站开发培训机构哪个好哈尔滨最新
  • 做名片哪个网站最好百度推广步骤
  • 秦皇岛市住建委网站上海百度推广开户
  • 真人百家樂网站建设企业宣传方式有哪些
  • 自己做的网站根目录哪里找到sem推广托管公司
  • 校园网站设计与实现南宁百度seo优化
  • 怎么做网站排版搜索引擎优化是指
  • 网站空间在哪里长春网站提升排名
  • 那个网站可以做视频app制作的360推广联盟
  • 做静态网站需要成本吗nba最新排行榜
  • 视频网站建设需要多少钱百度收录权重
  • 商务网站创建经费预算搜索引擎的工作原理是什么
  • 网站制作体会营业推广策略有哪些
  • 个人网站的设计与制作论文本地广告推广平台哪个好
  • 云主机建立web网站广告推广怎么做
  • 洛阳网站建设招聘信息免费个人网站空间
  • 重庆医疗网站建设2023很有可能再次封城吗
  • 网站备案照片新冠疫情最新情况最新消息
  • 电子商务网站建设的知识点新媒体营销策略
  • 安顺网站开发网站建设设计
  • pc端与手机端网站开发的区别网站快速优化排名app