嵌入式实习日记:线程同步与互斥探索

需积分: 12 4 下载量 96 浏览量 更新于2024-09-09 收藏 584KB DOCX 举报
在本文档中,学生廖士月记录了他在洛阳理工学院物联网工程专业实习的第五天,主要学习了关于线程和线程同步互斥的相关知识。实习日志详细阐述了线程的概念,线程与进程的区别,以及在操作系统中的调度。此外,还涉及到了网络编程的基础,如TCP/IP协议、socket编程接口和字节序问题。 线程是轻量级的进程,它们共享同一个进程的内存空间,减少了系统开销。每个线程都有自己的栈,但共享堆和全局变量。线程由进程创建,而在操作系统看来,无论是进程还是线程,都需要参与调度。值得注意的是,主线程必须等待所有子线程结束后才能退出。 实习作业中提到了使用信号量实现线程同步与互斥的问题。一个信号量可以用来控制对共享资源的访问,防止多个线程同时访问造成的数据不一致。例如,只有一个信号量时,可以实现简单的互斥访问,即一次只允许一个线程访问资源。另一个作业是设计一个生产者-消费者模型,其中生产者线程有sem值为3的信号量,消费者线程有sem值为0的信号量,全局变量表示产品数量,最多为3个。这种模型展示了如何通过信号量控制生产者生产产品和消费者消费产品的同步。 网络编程部分介绍了TCP/IP协议,它是一组用于不同主机间通信的协议。TCP是传输层协议,负责可靠的数据传输,而IP是网络层协议,用于寻址和路由。在网络编程中,socket是关键的编程接口,它像文件一样可以被打开、读取、写入和关闭。IP地址是网络中主机的唯一标识,端口号则区分同一主机上的不同进程。字节序的讨论涉及到在不同CPU架构之间通信时如何确保数据的一致性,网络字节序是解决这个问题的标准。 通过实习,作者认识到从进程的输出顺序来判断线程执行过程是不准确的,因为线程的调度顺序是不确定的。他还发现信号量不仅可以实现同步,也可以用于互斥,并且在实践中对线程的理解感到有些困难。作者的收获是理解了系统调度的不确定性以及信号量在同步和互斥中的作用。 这篇实习日志涵盖了线程、线程同步互斥、网络编程基础等多个IT知识点,是学习这些概念的一个很好的实例。