嵌入式软件
文章平均质量分 69
飞飞快跑
是我,没错
展开
-
网络编程的进阶1------------tftp协议
我们在学完网络编程TCP/UDP客户端,服务端之后可能就觉得网络编程差不多就那样了,的确如此,其他知识都从这些基本的知识扩展开来的,我们现在就去学习基于这些扩展的知识---------tftp协议什么是tftp协议?TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议。和使用TCP的文件传输协议(FTP)不同,为了保持简单短小FTP协议在日常生活中我们用的还是比较多的,用来传输大文件,而tf原创 2021-06-21 11:36:40 · 317 阅读 · 1 评论 -
linux多线程----------->线程池的介绍和使用
通俗一点来说线程池就是将线程放在这个"水池"中,我们可以加水也可以防水对吧?其实线程池也是这样的,主要的任务是新建进程和销毁进程来管理整个线程池。我们可以想象这么一种情况,面对一个要接收多个任务的情况,我们正常的做法就是,来一个任务我就新建一个线程去处理,然后任务处理完了就要销毁这个线程,就要一直去关注情况是怎么样的,极大的消耗了资源。在这种情况下就诞生了一种处理线程新的机制---------------线程池所谓线程池,我们可以将它比喻成一个水池一样,水满的时候防水,没有水的时候加水,保持一个有原创 2021-05-28 20:28:14 · 350 阅读 · 2 评论 -
Linux多进程机制和锁(四)信号量
我们在面试的时候经常会被问到,进程间的方式有几种分别应用于哪些场景?其中有一项最容易答漏的便是信号量信号量不仅可以用来完成进程间的通信,还可以用来进行线程中的通信信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作。信号量不一定是锁定某一个资源,而是流程上的概念,比如:有 A,B 两个线程,B 线程要等 A 线程完成某一任务以后再进行自己下面的步骤,这个任务并不一定是锁定某一资源,还可以是进行一些计算或者数据处理之类。信号量(信号灯)与互斥锁和条件变量原创 2021-04-28 20:58:09 · 437 阅读 · 0 评论 -
Linux多进程机制和锁(三)生产者与消费者模型
在上章节我们使用读写锁效率已经变得相对高了,这里介绍一个模型---------生产者与消费者模型什么是生产者与消费者模型呢?学过操作系统这门课的人们都应该记得线程的调度的时候有一个”生产者与消费者“模型,在我们多线程这里其实也是一样的生产者生产出资源的时候消费者出消费,同时消费者和生产者的操作都是串行操作的,现在我们来举一个例子来进一步了解这个模型生产者有 5 个,往链表头部添加节点,消费者也有 5 个,删除链表头部的节点。#include<stdio.h>#include<原创 2021-04-26 11:06:42 · 219 阅读 · 0 评论 -
Linux多进程机制和锁(二)进程的同步----------读写锁
读写锁是互斥锁的升级版对于同一个变量我们对此同时写会导致数据不同步,但是却可以同时读,因此读是并行的,写是串行的正确的使用读写锁可以提高并发量下面是一个经典的例子,同样也是几个小孩数数,但是这次却有小孩记录读了多少一共有八个线程,一个全局变量,三个变量写此变量,五个变量不定时读变量代码如下:#include<pthread.h>#include <stdlib.h>int num=0;void w_num(void *arg);void r_num(void *a原创 2021-04-22 00:38:39 · 313 阅读 · 0 评论 -
Linux多进程机制和锁(二)进程的同步----------互斥锁
两个小朋友数数,从一数到100C代码实现如下#include<stdio.h>#include<pthread.h>int a=0;void *my_fun1(void *arg){ int i=0; for(i=0;i<50;i++) { int tmp=a; tmp++; usleep(原创 2021-04-21 01:09:57 · 163 阅读 · 0 评论 -
Linux多进程机制和锁(一)线程的创建以及基本函数使用
进程和线程进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。“进程——资源分配的最小单位,线程——程序执行的最小单位”进程有独立的地址空间,一个进程崩溃后,在保护原创 2021-04-20 00:54:58 · 147 阅读 · 0 评论 -
linux环境中gdb调试工具的使用
什么是GDB,能干啥? gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说,GDB主要帮助你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事。4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。GDB调试的对象 GDB主要来调试C/C++语言写的程序,当然也就可以调试其他语言程序。这里我们原创 2021-04-19 01:16:50 · 298 阅读 · 0 评论 -
嵌入式软件------------网络编程
(一)Linux网络编程–网络知识介绍Linux网络编程–网络知识介绍客户端和服务端网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的–客户端和服务器端.客户端在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序。服务端和客户端相对应的程序即为服务端程序。被动的等待外面的程序来和自己通讯的程序称为服务端原创 2021-03-18 19:23:16 · 116 阅读 · 0 评论