浅谈 linux 多线程编程和 windows 多线程编程的异同很早以前就想写写linux下多线程编程和windows下的多线程编程了,但是每当写时又不知道从哪个地方写起,怎样把自己知道的东西都写出来,下面我就谈谈linux多线程及线程同步,并将它和windows的多线程进行比较,看看他们之间有什么相同点和不同的地方。其实最开始我是搞windows下编程的,包括windows编程,windows 驱动,包括usb驱动,ndis驱动,pci驱动,1394驱动等等,同时也一条龙服务,做windows下的应用程序开发,后面慢慢的我又对linux开发产生比较深的兴趣和爱好,就转到搞linux开发了。在接下来的我还会写一些博客,主要是写linux编程和windows编程的区别吧,现在想写的是linux下usb驱动和windows下usb驱动开发的区别,这些都是后话,等我将linux多线程和windows多线程讲解完后,我再写一篇usb驱动,谈谈windows 和linux usb驱动的东东。好了,言归正传。开始将多线程了。首先我们讲讲为什么要采用多线程编程,其实并不是所有的程序都必须采用多线程,有些时候采用多线程,性能还没有单线程好。所以我们要搞清楚,什么时候采用多线程。采用多线程的好处如下:(1)因为多线程彼此之间采用相同的地址空间,共享大部分的数据,这样和多进程相比,代价比较节俭,因为多进程的话,启动新的进程必须分配给它独立的地址空间,这样需要数据表来维护代码段,数据段和堆栈段等等。(2)多线程和多进程相比,一个明显的优点就是线程之间的通信了,对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。但是对于多线程就不一样了。他们之间可以直接共享数据,比如最简单的方式就是共享全局变量。但是共享全部变量也要注意哦,呵呵,必须注意同步,不然后果你知道的。呵呵。(3)在多cpu的情况下,不同的线程可以运行不同的cpu下,这样就完全并行了。反正我觉得在这种情况下,采用多线程比较理想。比如说你要做一个任务分2个步骤,你为提高工作效率,你可以多线程技术,开辟2个线程,第一个线程就做第一步的工作,第2个线程就做第2步的工作。但是你这个时候要注意同步了。因为只有第一步做完才能做第2步的工作。这时,我们可以采用同步技术进行线程之间的通信。针对这种情况,我们首先讲讲多线程之间的通信,在windows平台下,多线程之间通信采用的方法主要有:(1)共享全局变量,这种方法是最容易想到的,呵呵,那就首先讲讲吧,比如说吧,上面的问题,第一步要向第2步传递收据,我们可以之间共享全局变量,让两个线程之间传递数据,这时主要考虑的就是同步了,因为你后面的线程在对数据进行操作的时候,你第一个线程又改变了数据的内容,你不同步保护,后果很严重的。你也知道,这种情况就是读脏数据了。在这种情况下,我们最容易想到的同步方法就是设置一个bool flag了,比如说在第2个线程还没有用完数据前,第一个线程不能写入。有时在2个线程所需的时间不相同的时候,怎样达到最大效率的同步,就比较麻烦了。咱们可以多开几个缓冲区进行操作。就像生产者消费者一样了。如果是2个线程一直在跑的,由于时间不一致,缓冲区迟早会溢出的。在这种情况下就要考虑了,是不让数据写入还是让数据覆盖掉老的数据,这时候就要具体问题具体分析了。就此打住,呵呵。就是用bool变量控制同步,linux 和windows是一样的。既然讲道了这里,就再讲讲其它同步的方法。同样 针对上面的这个问题,共享全局变量同步问题。除了采用bool变量外,最容易想到的方法就是互斥量了。呵呵,也就是传说中的加锁了。windows下加锁和linux下加锁是类似的。采用互斥量进行同步,要想进入那段代码,就先必须获得互斥量。linux上互斥量的函数是:windows下互斥量的函数有:createmutex 创建一个互斥量,然后就是获得互斥量waitforsingleobject函数,用完了就释放互斥量ReleaseMutex(hMutex),当减到0的时候 内核会才会释放其对象。下面是windows下与互斥的几个函数原型。HANDLE WINAPI CreateMutex(__in LPSECURITY_ATTRIBUTES lpMutexAttributes,__in BOOL bInitialOwner,__in LPCTSTR lpName);可以可用来创建一个有名或无名的互斥量对象第一参数 可以指向一个结构体SECURITY_ATTRIBUTES 一般可以设为null;第二参数 指当时的函数是不是感应感应状态 FALSE为当前拥有者不会创建互斥第三参数 指明是否是有名的互斥对象 如果是无名 用null
您可能关注的文档
- 千县农汇——商家产品上架流程选编.docx
- 七年级下册美术源于生活高于生活浅析.ppt
- 牵准单元复习的牛鼻子选编.doc
- 七年级下册苏教版语文第一单元复习字词浅析.ppt
- 铅酸蓄电池产品生产许可证实施细则选编.doc
- 七年级下册外研版_Module9_Life_history_unit2_He_decided_to_be_an_actor.浅析.ppt
- 前葛庐山路顶管专项施工方案选编.doc
- 前期物业服务方案选编.doc
- 前期物业管理方案选编.doc
- 七年级下册语文版《我爱这土地》浅析.ppt
- 25-26学年政治(部编版)选择性必修第二册课件:第1单元 周清1 民法中的人身权及财产权.pptx
- 25-26学年政治(部编版)选择性必修第二册课件:1.4.1 权利保障 于法有据.pptx
- 2025北京丰台区高二(上)期中地理(A卷)含答案.docx
- 2025北京三帆中学初三(上)开学考英语试题含答案.docx
- 2025北京一零一中初三9月月考语文试题含答案.docx
- 2025北京海淀区初三(上)期中道法试题含答案.docx
- 2025北京丰台区高一(上)期中政治(A卷)含答案.docx
- 25-26学年政治统编版必修4课件:3.3 唯物辩证法的实质与核心.pptx
- 25-26学年政治统编版必修4课件:7.2 正确认识中华传统文化.pptx
- 湖北省部分高中2026届高三上学期二模联考 历史试卷.docx
最近下载
- 青岛版五四制一年级上册数学期末试题.pdf VIP
- 城市公园管理与维护规范.docx VIP
- 精品解析:2022-2023学年山东省青岛市城阳区青岛版四年级上册期末质量抽测数学试卷(原卷版).docx VIP
- 浙江省杭州市拱墅区2024-2025学年四年级上学期期末考试数学试题.docx VIP
- 5《和大家在一起》第二课时 (教学设计) 一年级道德与法治下册(统编版2025).pdf VIP
- 农业社会化服务体系.ppt VIP
- 5《和大家在一起》第一课时 (教学设计) 一年级道德与法治下册(统编版2025).docx VIP
- 2023年四川高级政工师题库 .pdf VIP
- 中国地理《中国的河流-长江》.ppt VIP
- 上海市闵行区2024-2025学年高一上学期期末考试生物试卷含答案.docx VIP
原创力文档

文档评论(0)