![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 81
zz2006
努力成为ARM专家
展开
-
深入浅出Win32多线程程序设计之(三):线程通信
<br />深入浅出Win32多线程程序设计之线程通信<br /> 线程之间通信的两个基本问题是互斥和同步。<br /><br /> 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。<br /><br /> 线程互斥是指对于共享的操作系统资源(指的是广义的"资源",而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何原创 2010-09-28 07:26:00 · 371 阅读 · 0 评论 -
深入浅出Win32多线程程序设计之(五):综合实例
<br />本章我们将以工业控制和嵌入式系统中运用极为广泛的串口通信为例讲述多线程的典型应用。<br /><br /> 而网络通信也是多线程应用最广泛的领域之一,所以本章的最后一节也将对多线程网络通信进行简短的描述。<br /><br />1.串口通信<br /><br /> 在工业控制系统中,工控机(一般都基于PC Windows平台)经常需要与单片机通过串口进行通信。因此,操作和使用PC的串口成为大多数单片机、嵌入式系统领域工程师必须具备的能力。<br /><br /> 串口的使用需要原创 2010-09-28 07:29:00 · 504 阅读 · 0 评论 -
Visual C++线程同步技术剖析
<br />使线程同步<br /><br /> 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进行。<br /><br /> 如果不采取适当的措施,其他线程往往会在线程处理任务结束前就去访问处理结果,这就很有可能得到有关处理结果的错误了解。例如,多个线程同时访问同一个全局变量,如果都是读取操作,则不会出现问题。如果一个线程负责改变此变原创 2010-09-28 07:30:00 · 225 阅读 · 0 评论 -
C++内存管理与内存泄漏及其检测
<br />一、内存错误的分类<br />a.内存访问错误<br />对内存进行读或写时发生的错误,可能是读未被初始化的内存单元,也可能是读写错误的内存单元。 <br />b.内存使用错误<br />主要是在动态请求内存之后没有正确释放产生的错误。<br />二、内存剖析(典型的c++内存模型)<br /> <br />BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BS转载 2010-09-28 07:34:00 · 461 阅读 · 0 评论 -
深入浅出Win32多线程程序设计(一)
<br /> 深入浅出Win32多线程程序设计之基本概念<br /> 引言<br /><br /> 从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。<br /><br /> 理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控转载 2010-09-28 07:22:00 · 407 阅读 · 0 评论 -
深入浅出Win32多线程设计之(四):MFC的多线程
<br />1、创建和终止线程<br /><br /> 在MFC程序中创建一个线程,宜调用AfxBeginThread函数。该函数因参数不同而具有两种重载版本,分别对应工作者线程和用户接口(UI)线程。<br /><br /> 工作者线程<br />CWinThread *AfxBeginThread(<br /> AFX_THREADPROC pfnThreadProc, //控制函数<br /> LPVOID pParam, //传递给控制函数的参数<br /> int nPri原创 2010-09-28 07:27:00 · 426 阅读 · 0 评论 -
C++学习基础知识
<br />一、#include “filename.h”和#include 的区别<br />#include “filename.h”是指编译器将从当前工作目录上开始查找此文件<br />#include 是指编译器将从标准库目录中开始查找此文件<br /> <br />二、头文件的作用<br />加强安全检测<br />通过头文件可能方便地调用库功能,而不必关心其实现方式<br /> <br />三、* , &修饰符的位置<br />对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名<br />转载 2010-10-14 13:37:00 · 336 阅读 · 0 评论 -
堆与栈的区别
<br />堆与栈有什么区别?<br />一、预备知识—程序的内存分配 <br />一个由c/C++编译的程序占用的内存分为以下几个部分 <br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 <br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br />3、全局区(静态区)(static)—,全局变转载 2010-10-19 12:57:00 · 422 阅读 · 0 评论