上一页 1 ··· 4 5 6 7 8 9 下一页

2010年11月29日

《C++编程规范》学习笔记(4)编程风格

摘要: 第14条 宁要编译时和连接时错误,也不要运行时错误能在编译时做的事情,就不要推迟到运行时。运行时的检查取决于控制流和数据的具体情况,很难知道检查是否彻底。 静态检查与数据和控制流无关静态表示的模型更加可靠静态检查不会带来运行时开销。编译时多态。定义泛型函数或类型时,考虑用编译时多态(模板)代替运行时多态(虚拟函数)。前者产生的代码能够更好地进行静态检查。(item 64)。枚举。在表示符号常量或受限整数时考虑定义enum向下强制。 如果经常使用dynamic_cast(或者更糟糕的static_cast),则可能说明基类提供的功能太少了。对于非得运行时检查的情况,应使用断言来检查内部编程错误( 阅读全文

posted @ 2010-11-29 20:53 一颗麦粒 阅读(186) 评论(0) 推荐(0) 编辑

《C++编程规范》学习笔记(3)

摘要: 第12条 懂得何时和如何进行并发性编程如果应用程序使用了多线程或进程,要知道如何尽量减少共享对象,以及如何安全地共享必须共享的对象。参考目标平台的文档,了解该平台的同步化原语。最好将平台的原语用自己设计 的抽象包装起来,方便移植确保正在使用的类型在多线程程序中使用时安全的 在自己编写可用于多线程程序的类型时,必须完成2个任务:必须确保不同线程能够不加锁地使用该类型的不同对象。其次,必须在文档中说明使用者在不同线程中使用该类型的同一个对象需要做什么,基本的设计问题是如何在类以及其客户之间分配正确执行的职责。主要的选择有外部加锁:调用者负责加锁。内部加锁:每个对象将所有对自己的访问串行化,通常采用 阅读全文

posted @ 2010-11-29 20:08 一颗麦粒 阅读(230) 评论(0) 推荐(0) 编辑

2010年11月28日

《Win32多线程程序设计》学习笔记 第5章 不要让线程成为脱缰野马

摘要: 利用terminatethread结束一个线程不建议使用这个函数 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Terminatesathread.BOOLWINAPITerminateThread(HANDLEhThread,//欲结束线程的handleDWORDdwExitCode//垓线程的结束代码);返回值:成功返回TRUE该函数是一个危险的函数,不到万不得以不使用它。TerminateThread强迫线程结束,手段激烈,线程没有机 阅读全文

posted @ 2010-11-28 14:49 一颗麦粒 阅读(187) 评论(0) 推荐(0) 编辑

2010年11月27日

《Win32多线程程序设计》学习笔记 第4章 同步控制 摘要

摘要: Critical SectionCritical Section(临界区) 用来实现“排他性占有”,使用范围是单一进程的各线程之间。它是:一个局部性对象,不是核心对象。快速有效率。不能同时有一个以上的critical section 被等待。无法侦测是否已被某个线程放弃。Mutexmutex是一个核心对像,可以在不同的线程间实现“排他性占有” ,甚至即使那些线程分属不同进程。它是:核心对象如果拥有mutex的那个线程结束 ,则会产生一个“abandoned”错误信息可使用Wait。。。()等待一个mutex。可以具名,因此可以被其他进程开启。只能被拥有它的那个线程释放。 SemaphoreSe 阅读全文

posted @ 2010-11-27 21:31 一颗麦粒 阅读(178) 评论(0) 推荐(0) 编辑

《Win32多线程程序设计》学习笔记 第4章 同步控制之 事件(Event Objects) 和 interlocked variables

摘要: event Event对象是一种核心对象,它的唯一目的就是成为激发状态或者未激发状态。这两种状态全由程序来控制,不会成为Wait..()函数的副作用。他们的状态完全在你的掌控之下。Mutex和semaphore就不同了,他们的状态会因为诸如WaitForSingleObject()之类的函数调用而变化。所以,你可以精确地告诉一个event对象做了什么事,以及什么时候做。创建event对象 Createsoropensanamedorunnamedeventobject.HANDLEWINAPICreateEvent(LPSECURITY_ATTRIBUTESlpEventAttributes, 阅读全文

posted @ 2010-11-27 21:02 一颗麦粒 阅读(209) 评论(0) 推荐(0) 编辑

《Win32多线程程序设计》学习笔记 第4章 同步控制之 信号量(Semaphores)

摘要: win32中的一个semaphore可以被锁住最多n次,其中n是semaphore被产生时指定的。n常常被设计成用来代表“可以锁住一份资源”的线程资源,不过并非单独一个线程就不能拥有所有的锁定。理论上,mutex是semaphore的一种退化,如果你产生一个semaphore并令最大值为1,那就是一个mutex。产生信号量(semaphore)代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Createsoropensanamedorun 阅读全文

posted @ 2010-11-27 19:56 一颗麦粒 阅读(224) 评论(0) 推荐(0) 编辑

2010年11月25日

《Win32多线程程序设计》学习笔记 第4章 同步控制之Mutex互斥器

摘要: Win32的Mutex和Critical Seciton非常类似。但是他以牺牲速度来增加弹性。Mutex是核心对象Mutex 和Critical Section 的区别:锁住一个未被拥有的Mutex,比锁住一个未被拥有的Critical Section需要花费几乎100倍的时间 。Mutex可以跨进程使用。 Critical Section只能在一个进程中使用。等待一个Mutex,你可以指定“结束等待” 的时间长短。对于critical section 就不行。两种对象的相关函数比较:CRITICAL_SECTION Mutex核心对象InitializeCriticalSection() . 阅读全文

posted @ 2010-11-25 16:55 一颗麦粒 阅读(435) 评论(0) 推荐(0) 编辑

《Win32多线程程序设计》学习笔记 第4章 同步控制之Critical Section

摘要: Win32中进程和线程的协调工作是由同步机制(synchronous mechanism)来完成的。Critical Sections(关键区域、临界区域) 重点:一旦一个线程进入一个critical section,他就能够一而再的重复进入critical section。每个进入操作,必须对应一个离开的操作。千万不要再一个critical section中调用Sleep或任何Wait等API函数。critical section不是核心对象,如果进入critical section的线程结束或者当掉了 ,而没有离开criticalsection的话,系统无法将此critical secti 阅读全文

posted @ 2010-11-25 15:55 一颗麦粒 阅读(214) 评论(0) 推荐(0) 编辑

2010年11月17日

《Win32多线程程序设计》学习笔记 第三章 快跑与等待

摘要: 1.等待一个线程的结束 调用WaitForSingleObject()并放置一个“线程核心对象”作为参数,将使线程#1开始睡眠,知道线程#2结束为止。就像Sleep函数一样,WaitForSingleObject也有一个参数用来指定最长的等待时间。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DWORDWaitForSingleObject(HANDLEhHandle,//等待对象的handle(代表一个核心对象).DWORDdwMilli 阅读全文

posted @ 2010-11-17 23:43 一颗麦粒 阅读(270) 评论(0) 推荐(0) 编辑

2010年11月16日

《C++编程规范》学习笔记(2)

摘要: 第4条:在代码审查上投入审查代码:更多的专注有助于提高质量 。亮出自己的代码,阅读别人的代码。互相学习,彼此都会受益。---------------------------------------------------------------设计风格 第5条:一个实体应该只有一个紧凑的职责一次只解决一个问题:只给一个实体(变量、类、函数、名称空间、模块和库)赋予一个定义良好的职责。随着实体变大,其职责范围自然也会扩大,但是职责不应该发散。这个类似于面向对象的单一模块单一职责原则。 第6条:正确、简单和清晰第一软件简单为美:正确优于速度。简单优于复杂。清晰优于机巧。安全优于不安全。要避免使用程 阅读全文

posted @ 2010-11-16 21:52 一颗麦粒 阅读(191) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 下一页

导航