多线程实现数据处理与打印分离

news2024/12/24 3:00:17

 

 注意,结构体传入数据

一开始int* 不能变成void

传入int ** 也会失效,

只能一开始在message 结构体里有 int* 类型才能运行

这是通过打印表格得到的

使用raylib 开发

#include <raylib.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <pthread.h>

typedef struct message {
	int flag;
	int a;
	int user;
	void* work;
	int* map;
} message;


void* showv2(void* msg) {
	
	static int cnt = 0;
	static int color = 1;
	message* m = (message*)msg;
	
//	二维数组失效
//	int** meshmap = (int**)m->work;
	
	
	// 一维数组测试
//	int* map =(int*)(*m).work;
	int* map = m->map;
	
	while (1) {
		while (m->flag == 0 || m->a == 1) {
//			_sleep(1);
			_sleep(0);
			printf("B 发现占用中 %d %d %d %d %d\n", m->a, m->user, m->flag, cnt, color);
		}
		m->a = 1;
		m->user = 1;
		printf("B 占用中\n");
		
		for (int p = 0; p < 1500; p++) {
			cnt += 1;
			if (cnt >= 500 * 500) {
				cnt = 0;
				color += 1;
			}
			map[cnt] = color;
//			printf("%d\n", cnt);
		}
		
//		printf("%d %d\n", cnt, color);
		
		printf("B 释放占用\n");
		m->a = 0;
		_sleep(30);
	}
}


int main() {
	
	InitWindow(500, 500, "okk");
	
	RenderTexture mesh = LoadRenderTexture(500, 500);
	BeginTextureMode(mesh);
	ClearBackground(WHITE);
	EndTextureMode();
	
	
	message msg;
	msg.a = 0;
	msg.flag = 0;
	msg.user = -1;
	
	int*map = new int[500 * 500];
	for (int i = 0; i < 500 * 500; i++) {
		map[i] = 0;
	}
	
	msg.work = (void*)&map;
	msg.map = map;
	
	pthread_t p;
	pthread_create(&p, NULL, showv2, (void*)&msg);
	
	int i = 0;
	int j = 0;
	int cnt = 0;
	int color = 1;
	int pv2 = 0;
	SetTargetFPS(60);
	
	while (1) {
		while (msg.a == 1) {
			printf("C 发现占用中%d\n", msg.user);
			_sleep(10);
		}
		msg.a = 1;
		msg.user = 999;
		printf("C 占用中\n");
		BeginTextureMode(mesh);
		
		for(int i=0;i<500*500;i++){
			DrawPixel(i%500,i/500,{map[i]*10%255,map[i]*50%255,map[i]*30%255,255});
		}
		EndTextureMode();
		
		msg.a = 0;
		printf("C 释放\n");
		BeginDrawing();
		DrawTexturePro(mesh.texture,{0,0,500,500},{0,0,500,500},{0,0},0,WHITE);
		DrawTexture(mesh.texture, 0, 0, WHITE);
		
		DrawText(TextFormat("fps %d", GetFPS()), 20, 30, 50, {155, 50, 210, 255});
		EndDrawing();
		
		
		static int flag = 0;
		if (flag > 30) {
			flag = 300;
			msg.flag = 1;
		} else {
			flag++;
		}
	}
	
	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2136106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【零成本】七日杀 服务器搭建 异地联机 无需公网IP、服务器

主要内容 什么是七日杀 搭建前需要准备什么 详细步骤 1.Steam中下载七日杀服务器工具 2.修改七日杀服务配置文件 3.启动七日杀服务器应用 4.运行 MoleSDN 进行异地联机 5.小伙伴打开游戏加入 鼠鼠的服务器 什么是七日杀 《七日杀》是一款沙盒生存恐怖游戏&#xff0c;…

Linux shell编程学习笔记80:gzip命令——让文件瘦身

0 引言 在 Linux shell编程学习笔记76&#xff1a;tar命令——快照 & 备份&#xff08;上&#xff09;-CSDN博客 Linux shell编程学习笔记77&#xff1a;tar命令——快照 & 备份&#xff08;下&#xff09;_linux 系统快照-CSDN博客 Linux shell编程学习笔记78&am…

ai绘画文生图怎么制作?2024教你快速进行ai绘画

ai绘画文生图怎么制作&#xff1f;2024教你快速进行ai绘画 AI绘画技术的迅速发展&#xff0c;使得用户只需输入文本描述&#xff0c;就能生成符合要求的图像&#xff0c;这种“文生图”&#xff08;Text-to-Image&#xff09;功能使得绘画和创作变得简单、高效。以下是5款帮助…

Git提交有乱码

服务器提交记录如图 可知application.properties中文注释拉黄线 &#xff0c;提示Unsupported characters for the charset ISO-8859-1 打开settings - Editor - File Encodings 因为我们项目的其他文件都是UTF-8&#xff0c;所以&#xff0c;我们将默认值都改成UTF-8 然后…

【原创】java+springboot+mysql鲜花商城(花店)系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

用于遥感深度学习的7种高光谱遥感图像和标签

数据介绍 此数据集来自于GIC(GRUPO INTELIGENCIA COMPUTACIONAL )官网 直达链接&#xff0c;采用MATLAB存储为矩阵形式&#xff0c;数据集后缀为.mat形式。每一个数据分为原始图像数据和标签数据&#xff0c;标签对应码请参考官网。注&#xff1a;此数据为公开数据&#xff0c…

20240915 每日AI必读资讯

国家网信办发布《人工智能生成合成内容标识办法&#xff08;征求意见稿&#xff09;》 - 要求所有的AI生成内容都要打标&#xff0c;包括文字、图像、视频、音频… - 文本内容要插入标识符提醒&#xff0c;音频内容要在里面插入提示音 - 对创作者不太友好&#xff0c;对平台…

PHP民宿管理APP---附源码74921

摘 要 随着旅游业的蓬勃发展和人们对个性化旅行体验的追求&#xff0c;民宿行业正迅速崛起并受到广大游客的青睐。民宿不仅为游客提供了更加亲近自然、体验当地文化的机会&#xff0c;同时也为房东带来了可观的经济收益。然而&#xff0c;随着民宿市场的不断扩大&#xff0c;民…

AI预测福彩3D采取888=3策略+和值012路或胆码测试9月14日新模型预测第87弹

经过80多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;80多期一共只错了8次&#xff0c;这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了&#xff0c…

自动驾驶:LQR、ILQR和DDP原理、公式推导以及代码演示(四、LQG和iLQG篇)

&#xff08;四&#xff09;LQG和iLQG原理、公式推导以及代码演示 在实际工程应用中&#xff0c;噪声是系统无法避免的因素&#xff0c;主要包括过程噪声和观测噪声。在自动控制、机器人、自主驾驶等领域&#xff0c;噪声的影响尤其显著。为了提高控制系统的鲁棒性和性能&…

MIPI CSI 接口定义与协议层介绍

文章目录 Definitions and AcronymsCSI-2 BriefD-PHYC-PHYM-PHYCSI-2 Layer DefinitionsMulti-Lane Distribution and MergingMulti-Lane InteroperabilityProtocol LayerLow Level ProtocolPacket FormatLong Packet FormatWhat does D-PHY Long Packet look like?What does …

类的初始化列表

文章目录 一、初始化列表1、初始化列表的使用2、必须使用初始化列表来初始化的成员 二、类型转换1、内置类型转换自定义类型2、自定义类型转换自定义类型 三、静态成员变量(static)1、static修饰成员变量2、静态成员函数 四、友元五、类里面再定义类六、匿名对象1、匿名对象的使…

大厂硬件梦:字节、腾讯“向首”,华为、小米“向手”

涉足可穿戴设备的大厂们&#xff0c;都抱着再造用户入口的野望&#xff0c;大模型治不好的痼疾&#xff0c;仍需继续前行寻找解药。 转载&#xff1a;科技新知 原创 作者丨茯神 编辑丨蕨影 苹果发布会再次令网友失望&#xff01;相比iPhone新机配色丑上热搜&#xff0c;反而苹…

Type-C与PD技术融合:重塑移动硬盘盒的未来

Type-C接口与PD充电技术&#xff1a;移动硬盘盒的革新之路 在数字化浪潮的汹涌澎湃中&#xff0c;我们的生活与工作环境被各式各样的电子设备所包围。从智能手机到平板电脑&#xff0c;从笔记本电脑到高清显示器&#xff0c;每一个设备都在以惊人的速度迭代更新&#xff0c;推…

集运系统:让海外集运包裹管理更简单!

随着全球化贸易的快速发展&#xff0c;海外包裹代收、仓储管理、退换货、国际快递等服务需求日益增长。集运系统作为一种专为海外客户提供一站式服务的软件系统&#xff0c;通过整合物流信息、管理订单、跟踪货物等功能&#xff0c;有效满足这些需求。本文将介绍集运系统的功能…

Python数据类型详解:这12个类型你都知道吗?

在Python中&#xff0c;数据类型是编程的基石&#xff0c;它们定义了可以操作的数据的种类。Python是一种动态类型语言&#xff0c;意味着你不需要显式地声明变量的类型&#xff1b;Python解释器会自动推断出变量所存储数据的类型。Python提供了多种内置数据类型&#xff0c;这…

立足本土,面向全球 | 全视通闪耀亮相Medical Fair Asia新加坡医疗展

Medical Fair Asia是亚洲地区最大的医疗设备、医疗器械和医疗技术展览会之一&#xff0c;自1997年创办以来&#xff0c;每两年在新加坡举办一次。该展会不仅是新加坡医疗行业交流的龙头平台&#xff0c;也是亚洲乃至全球医疗企业和专业人士共聚一堂、展示最新产品和技术的重要舞…

人情债VS利息债:如何更好的借贷?

在人生的旅途中&#xff0c;谁不曾遭遇资金紧张的瞬间&#xff1f;面对这样的挑战&#xff0c;是向亲朋好友伸出援手&#xff0c;还是探索贷款之路&#xff0c;成为了一个值得深思的问题。今天&#xff0c;我们就以小刘的经历为镜&#xff0c;共同探讨这一话题。 故事的主角小刘…

Modbus协议03:Modbus功能码和协议分类

视频链接&#xff1a;【3】Modbus协议功能码说明_哔哩哔哩_bilibili【3】Modbus协议功能码说明是【直播回放】小白也可以听懂的Modbus协议讲解的第3集视频&#xff0c;该合集共计4集&#xff0c;视频收藏或关注UP主&#xff0c;及时了解更多相关视频内容。https://www.bilibili…

详解:冒泡排序

1.是什么 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成…