首页 > 其他分享 >thread同步测试

thread同步测试

时间:2022-11-06 13:22:59浏览次数:65  
标签:同步 thread cid int number 测试 pthread sem NULL

一、任务要求:

  1. 编译运行附件中的代码,提交运行结果截图,并说明程序功能
  2. 修改代码,把同步资源个数减少为3个,把使用资源的线程增加到 (你的学号%3 + 4)个,编译代码,提交修改后的代码和运行结果截图。

二、完成详情

1.编译运行附件中的代码,提交运行结果截图,并说明程序功能

运行结果

程序功能

该程序是生产者消费者模型,共有两个线程,一个是生产者线程,一个是消费者线程。生产者生成资源,消费者取走资源。

2.修改代码

#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <semaphore.h>

#define NUM 3//同步资源个数减少为3个 
int queue[NUM];
sem_t blank_number, product_number;

void *producer ( void * arg )
{
	static int p = 0;

	for ( ;; ) {
		sem_wait( &blank_number );
		queue[p] = rand() % 1000;
		printf("Product %d \n", queue[p]);
		p = (p+1) % NUM;
		sleep ( rand() % 5);
		sem_post( &product_number );
	}
}
void *consumer ( void * arg )
{

	static int c = 0;
	for( ;; ) {
		sem_wait( &product_number );
		printf("Consume %d\n", queue[c]);
		c = (c+1) % NUM;
		sleep( rand() % 5 );
		sem_post( &blank_number );
	}
}

int main(int argc, char *argv[] )
{
	pthread_t pid, cid;
    
	sem_init( &blank_number, 0, NUM );
	sem_init( &product_number, 0, 0);
	pthread_create( &pid, NULL, producer, NULL);
	pthread_create( &cid, NULL, consumer, NULL);//把消费者进程改为20201307%3+4=4个 
	pthread_create( &cid, NULL, consumer, NULL);
	pthread_create( &cid, NULL, consumer, NULL);
	pthread_create( &cid, NULL, consumer, NULL);
	pthread_join( pid, NULL );
	pthread_join( cid, NULL );//增加对应等待进程为4个 
	pthread_join( cid, NULL );
	pthread_join( cid, NULL );
	pthread_join( cid, NULL );
	sem_destroy( &blank_number );
	sem_destroy( &product_number );
	return 0;
}

运行结果截图

标签:同步,thread,cid,int,number,测试,pthread,sem,NULL
From: https://www.cnblogs.com/yu15141310373/p/16862439.html

相关文章

  • thread同步测试
    1.编译运行附件中的代码,提交运行结果截图,并说明程序功能代码:#include<stdio.h>#include<pthread.h>#include<stdlib.h>#include<semaphore.h>#defineNUM5i......
  • MyBatis框架快速入门-搭建环境,编写代码,测试。
    MyBatis框架快速入门1入门案例案例的结构如下:MyBatis开发准备搭建MyBatis开发环境,实现第一个案例2使用Mybatis准备下载mybatishttps://github.com/mybati......
  • 测试框架搭建
    1、新建一个module,在pom.xml中新增如下内容:<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></......
  • Python自动化测试工具Selenium
    Python能发挥作用的领域太多了,包括web开发、爬虫、自动化测试、大数据分析、机器学习与深度学习。今年我们来玩玩Python在web自动化领域的应用。SeleniumWithPython中文......
  • pgpool ii在lightdb下的性能测试
    1、从https://www.pgpool.net/下载最新版pgpoolii,如4.3.2。2、假设安装了postgresql或lightdb,百度一搜即可3、解压包,执行./configure &&make&&makeinstall4、修......
  • 测试也应该具备的项目管理能力
    转载:https://www.cnblogs.com/imyalost/p/16560084.html前几天在技术交流群有同学问到:“需求不明确&测试时间不足,经常加班,交付质量也不太好,该如何处理”?群里其他同学很热......
  • 测试脚本
    #!/bin/bashBIN=/path/to/your/vasp/executablermWAVECARSUMMARY.diaforiin5.15.25.35.45.55.65.7;docat>POSCAR<<!cubicdiamond$i......
  • 测试流程如何落地?
    转载:https://www.cnblogs.com/imyalost/p/16380505.html  前段时间公众号后台有粉丝留言问了一个问题:作为测试leader,该如何落地测试流程?这个问题初看很简单,落地流程......
  • robotframework自动化测试框架实战教程:测试数据整理工具(Robottiy)
    *内置的Tidy工具在RobotFramework4.1中被弃用,取而代之的是新的增强型外部Robottiy工具。它在RobotFramework5.0中被完全删除。安装pipinstallrobotframework-tidy......
  • robotframework自动化测试框架实战教程:测试数据文档工具(Testdoc)
    生成文档的数据源可以是单个文件,单个目录,也可以是多个文件和目录.所有这些情况,最后那个参数都必须是最终文档输出要写入的文件.基本用法python-mrobot.testdoc......