项目开发日报表——第七天

项目开发日报表——第七天

项目名称【苏嵌实训-嵌入式 linuxC 第 7 天】
今日进度以及任务嵌入式Linux C文件编程、嵌入式Linux C多任务编程。
本日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量)按计划完成。编写代码实现在文件中输入多行和输出多行;编写代码实现线程的创建、退出、等待、状态(可结合态变为分离态)。
本日开发中出现的问题汇总1.嵌入式为什么要移植操作系统?
2. 单任务和多任务;
3. 进程和线程;
4.如何避免多线程退出导致的内存泄露?
5.pthread_exit和return的区别?
6.线程资源为什么不采用进程退出之后一起回收?
问题解答1.答: (1)提供软件的移植性;
(2)操作系统提供了多任务操作;
(3)操作系统提供了丰富的网络协议栈;
(4)操作系统将所有设备抽象成文件,方便访问设备。

2.答: (1)单任务:在一个任务执行期间,其他任务不能被调度;
(2)多任务:当前CPU单核,存在任务并发,不存在任务并行;当前CPU是多核,既存在并发,也存在并行。

3.答: (1)进程:实现多任务的开销较大,因为每个进程都有4G的独立地址空间,导致进程间通信效率不高;优点是安全。
(2)线程:实现多任务的开销小,因为每个线程共享地址空间,通信效率高;缺点是不安全。

4.答: (1)每个可结合线程需要显示的调用pthread_join回收;
(2)用线程分离函数pthread_detach将其变成分离态的线程。

5.答: pthread_exit()会清空弹出线程栈的所有内容,return不会弹出栈。

6.答: 有些程序(进程)一旦运行之后将会长期运行,不会结束,所以次线程在结束时必须回收资源。如果不回收,每结束一个次线程就导致一部分资源被占用,慢慢累积会使得整个进程资源越用越少,最后导致进程崩溃。
本日开发收获掌握了Linux C文件编程的一些方法,更深入了解了进程线程的使用。
笔记lseek(fd,0,SEEK_SET);//将文件读写位置移动到文件头;

默认情况下,创建的线程是可结合态。

弹栈线程退出处理函数的几种条件:
(1)调用thread_cleanup_pop(!0),主动出栈;
(2)如果线程是被别人调用pthread_cancel取消的,会自动弹栈;
(3)如果线程是调用pthread_exit函数退出的,也会自动弹栈;
(4)注意:若使用return退出的话,是不会自动弹栈的,必须主动调用thread_cleanup_pop(!0)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值