Loading

摘要: #三次握手 第一次握手:发送方->接收方 第一次发送信息,A发送信息,无任何回应,无法判断自己发送是否成功。 B接收信息,可以判断自己接收信息没有问题,对方发送自然也没有问题。 发送方:自己发送;自己接收;对方发送;对方接收。 接收方:自己发送;自己接收√;对方发送√;对方接收。 第二次握手:发送方 阅读全文
posted @ 2020-12-11 23:19 沿途有余弦 阅读(76) 评论(0) 推荐(0)
摘要: UDP收发消息 udp协议使用数据报套接字,无需建立链接 //send public class Udp_Send_01 { public static void main(String[] args) throws IOException { DatagramSocket socket=new D 阅读全文
posted @ 2020-12-11 22:56 沿途有余弦 阅读(81) 评论(0) 推荐(0)
摘要: InetAddress和SocketAddress //InetAddress InetAddress add1=InetAddress.getByName("127.0.0.1"); InetAddress add2=InetAddress.getByName("localhost"); Inet 阅读全文
posted @ 2020-12-11 22:55 沿途有余弦 阅读(94) 评论(0) 推荐(0)
摘要: 1、String被final修饰,意味着不可被继承修改; 2、String其实就是char数组,这个char数组也被final修饰,意味着指针地址无法改变,但允许对数组中的元素值进行操作; 3、当String作为一个函数参数时,对参数的修改不会影响其原本的值,可以理解为String作为函数参数时是值 阅读全文
posted @ 2020-12-11 22:19 沿途有余弦 阅读(150) 评论(0) 推荐(0)
摘要: 内存池的使用 ​ 内存池在创建时先从系统中获取一大块内存(静态或动态),然后分成相同大小的多个小内存块,这些小内存块通过链表连接起来(此链表也成为空闲链表)。线程每次申请内存块时,系统从空闲链表中取出链头上第一个内存块,提供给申请者。 ​ 也就是说,内存块除了分配的大小外,还有一个指针来链接其他内存 阅读全文
posted @ 2020-12-11 22:09 沿途有余弦 阅读(137) 评论(0) 推荐(0)
摘要: 软件定时器的使用 ​ 软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上(系统滴答定时器)。软件定时器使系统能够提供不受数目限制的定时器服务。 ​ RT-Thread 操作系统提供的软件定时器,以系统节拍(OS Tick)的时间长度为定时单位,提供了基于系统节拍整数倍的定时能力,即 阅读全文
posted @ 2020-12-11 22:07 沿途有余弦 阅读(296) 评论(0) 推荐(0)
摘要: 邮箱 ​ RT-Thread 操作系统的邮箱用于线程间通信,特点是开销比较低,效率较高。邮箱中的每一封邮件只能容纳固定的 4 字节内容(针对 32 位处理系统,指针的大小即为 4 个字节,所以一封邮件恰好能够容纳一个指针)。 ​ 线程或中断服务例程把一封 4 字节长度的邮件发送到邮箱中,而其他需要的 阅读全文
posted @ 2020-12-11 22:05 沿途有余弦 阅读(123) 评论(0) 推荐(0)
摘要: 事件集 ​ RT-Thread 中的事件集用一个 32 位无符号整型变量来表示,变量中的一个位代表一个事件,线程通过“逻辑与”或“逻辑或”与一个或多个事件建立关联形成一个事件组合。 ​ 在 RT-Thread 中,事件集控制块是操作系统用于管理事件的一个数据结构。 struct rt_event { 阅读全文
posted @ 2020-12-11 22:04 沿途有余弦 阅读(145) 评论(0) 推荐(0)
摘要: 线程优先级翻转 ​ 使用信号量会导致的另一个潜在问题是线程优先级翻转问题。所谓线程优先级翻转, 即当一个高优先级线程试图通过某种互斥IPC对象机制访问共享资源时, 如果该IPC对象已被一低优先级的线程所持有, 而这个低优先级线程在运行过程中可能又被其它一些中等优先级的线程抢占,因此造成高优先级线程被 阅读全文
posted @ 2020-12-11 22:03 沿途有余弦 阅读(216) 评论(0) 推荐(0)
摘要: 临界区,互斥量与信号量 ​ 1、信号量可以由任何线程(以及中断)释放,它用于同步的时候就像交通灯,线程只有在获得许可的时候才可以运行,强调的是运行步骤; ​ 互斥量只能由持有它的线程释放,即只有“锁上”它的那个线程才有“钥匙”打开它。它用于互斥的时候就像一把钥匙,只有获得钥匙的线程才可以运行,强调的 阅读全文
posted @ 2020-12-11 22:00 沿途有余弦 阅读(175) 评论(0) 推荐(0)
摘要: 互斥量 ​ 互斥量(互斥锁)是用于线程间互斥访问的IPC对象,它是一种特殊的二值性信号量。当某个线程访问系统中的共享资源时,通过引入互斥量机制,可以保证其他线程无法取得对此共享资源的访问权。 ​ 互斥量只有两种状态:LOCKED和UNLOCKED,分别代表加锁和开锁的两种情况。 ​ 当有线程持有它时 阅读全文
posted @ 2020-12-11 21:58 沿途有余弦 阅读(326) 评论(0) 推荐(0)
摘要: 临界区保护 ​ 临界资源是指一次仅允许一个线程访问的共享资源。它可以是一个具体的硬件设备,也可以是一个变量、一个缓冲区。 ​ 不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它们进行访问。 ​ 每个线程中访问(操作)临界资源的那段代码称为临界区(Critical Section),我们每次 阅读全文
posted @ 2020-12-11 21:57 沿途有余弦 阅读(184) 评论(0) 推荐(0)
摘要: 信号量的使用 struct rt_semaphore { struct rt_ipc_object parent; /**< inherit from ipc_object */ rt_uint16_t value; /**< value of semaphore. */ }; 定义静态信号量:st 阅读全文
posted @ 2020-12-11 21:55 沿途有余弦 阅读(129) 评论(0) 推荐(0)
摘要: 空闲线程和钩子函数 •空闲线程是一个比较特殊的系统线程,它具备最低的优先级。当系统中无其他就绪线程可运行时,调度器将调度到空闲线程。 •空闲线程还负责一些系统资源回收以及将一些处于关闭态的线程从线程调度列表中移除的动作 •空闲线程在形式上是一个无线循环结构,且永远不被挂起。 •在RT-Thread 阅读全文
posted @ 2020-12-11 21:53 沿途有余弦 阅读(137) 评论(0) 推荐(0)
摘要: 线程的时间片轮询调度 RT-Thread 最大支持 256 个优先级(数值越小的优先级越高,0 为最高优先级, 最低优先级预留给空闲线程); 用户可以通过rt_config.h中的RT_THREAD_PRIORITY_MAX宏来修改最大支持的优先级; 针对STM32 默认设置最大支持32个优先级; 阅读全文
posted @ 2020-12-11 21:52 沿途有余弦 阅读(312) 评论(0) 推荐(0)
摘要: 线程的创建 线程的组成: RT-Thread 中,线程由三部分组成:线程代码(入口函数)、线程控制块、线程堆栈。 线程代码 无限循环结构: void thread_entry(void *parameter) { while(1) { /* 等待事件的发生*/ . . /* 处理事件*/ } } 顺 阅读全文
posted @ 2020-12-11 21:50 沿途有余弦 阅读(133) 评论(0) 推荐(0)