Dr.Wing

心翼的技术笔记本

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2011年7月12日

摘要: 一、基础篇1、多核编程的几个难题及其应对策略主要讲解多核编程时的串行化方面的难题及其应对策略。阅读全文2、多核编程中的锁竞争难题锁竞争会导致加速系数随CPU核数增多而下降的现象。核数增加到128时,加速系数只有0.78,还不如在单核CPU上运行的速度。 S(p) = (t +1)/ (p + t/p) = p*(t+1) / (p*p+t) (锁竞争下的加速系数公式) 。阅读全文3、多核编程中的负载平衡难题负载平衡的难度与CPU的核数成正比,CPU核数越多,负载划分的难度就越大。 阅读全文二、OpenMP专题1、OpenMP并行程序设计(一)介绍OpenMP程序在并行计算时的效率,在双核CPU 阅读全文
posted @ 2011-07-12 16:40 心翼 阅读(499) 评论(0) 推荐(1) 编辑

2011年7月10日

摘要: ①框架类MainFrame中的窗口,是在视图类View类的后面。即是说View类像墙纸一样覆盖在MainFrame的上面。②OnWndMsg()函数是真正完成消息映射的处理工作,利用函数中的很多if来处理。③画图中的画线操作中,可以用MoveToEx()和LineTo()结合;或者用MoveTo()和LineTo()结合。其中MoveToEx()和MoveTo()是定位起点,LineTo()是画线所在的终点位置。确定了两个点既能画线了。④同窗口有关的,都继承于CWnd类中,同作图相关的都在CDC类中。⑤加了::符号的函数是全局函数,没加的编译器就会默认为当前类中的成员函数。⑥GetDC()这个 阅读全文
posted @ 2011-07-10 00:52 心翼 阅读(196) 评论(0) 推荐(1) 编辑

2011年7月9日

摘要: ①MFC中的WinMain函数在AppMoDul.cpp文件中。②构造派生类时,先构造基类。于是,则可将我们写的程序同微软的MFC,WinMain等联系起来。③由继承性原理,this指针指向派生类的对象。④Afx开头的函数都是应用程序类框架函数,在所编的程序中到处都可以引用,它们都是全局函数。⑤AfxEndDeferRegisterClass有很多if判断窗口,而后赋予类名,最后用AfxRegisterClass注册。实际这两个函数是一个函数。⑥preCreateWindow实际是在注册窗口,是Frame类的窗体。⑦MainFram和View类是两种窗口。⑧创建窗口的时候,会有一个WM_Cre 阅读全文
posted @ 2011-07-09 23:58 心翼 阅读(181) 评论(0) 推荐(0) 编辑

2011年7月8日

摘要: WINDOWS高级窗口的客户区域拖动技术及其应用来源:http://dev.21tx.com WINDOWS应用程序窗口一般包括两种:普通窗口和常居顶层的无标题条高级窗口。前者是由WINDOWS内部功能定制的,它具有WINDOWS应用程序窗口的所有普通特性:具有标题条、窗口边框、最大化按钮、最小化按钮和系统默认的快捷键及鼠标支持功能等,利用鼠标左键拖动该种窗口的标题条可以在屏幕上任意移动窗口,当鼠标光标停在窗口边框上时可以改变窗口大小;后者是一种定制的高级窗口,它不具有普通窗口的任何属性,整个窗口的控制必须由编程者来一一确定,使用这种窗口的典型实例有WINDOWS中的IME输入法应用程序、UC 阅读全文
posted @ 2011-07-08 11:08 心翼 阅读(745) 评论(0) 推荐(0) 编辑

2011年7月1日

摘要: 1、OS同应用程序之间的联系,是通过消息机制来完成的。OS提供出各种API函数,提供给应用程序“控制”操作系统去做事情的接口。可以将操作系统比喻成一个万能的手下,而应用程序是它的主人。当有事件发生时(如用户在计算机前的输入、输出操作),然后由OS感知到这个事件(就像这个手下知晓了有事发生),然后需要OS将信息通过“回调函数”WindowProc来通知应用程序,有哪些事件发生了。(手下禀报主人有事),然后由应用程序编写好的回调函数中的代码,来决定如何处理事件。其中,应用程序是通过消息结构体,就是MSG的消息结构体,通过GetMessage()来从消息队列中取得消息本章代码详细分析如下①、代码部分 阅读全文
posted @ 2011-07-01 15:25 心翼 阅读(298) 评论(0) 推荐(1) 编辑

2011年6月30日

摘要: 刚安装Microsoft visual C++ 2010 学习版,运行一段代码,出现了如下图错误:在网上找了半天类似的错误,有说建项目属性=》链接器=》系统,应该设置为windows,我设置了也不好使。我建项目是严格按照“Win32控制台应用程序”设置的“空项目”,所执行的.cpp文件也有main()方法,那到底错哪儿了呢?错误原因:我原来学的是C语言,c文件在Visual c++ 6.0中创建的步骤是:文件=》新建=》工程,然后选择“Win32 Console Application”工程建好之后,再点击文件=》新建=》文件,选择C语言的h文件,这样新建的h文件也就自动在建好的工程里面了,而 阅读全文
posted @ 2011-06-30 16:35 心翼 阅读(7972) 评论(0) 推荐(1) 编辑

摘要: 产生这个问题可能的原因1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain.2. 你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。解决方法1.进入project->setting->c/c++, 在category中选择preprocessor,在processor definitions中删除_CONSOLE, 添加_WINDOWS2.进入project->setting->Link, 在Project options中将 阅读全文
posted @ 2011-06-30 15:46 心翼 阅读(1869) 评论(0) 推荐(1) 编辑

摘要: QuestionI'm trying to compile a piece of code such as:MessageBox("Hello world!");... when I compile the project, the compiler yields:error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'const char [12]' to 'LPCTSTR'What am I doing wrong?ProblemThi 阅读全文
posted @ 2011-06-30 15:21 心翼 阅读(4802) 评论(0) 推荐(0) 编辑

2011年6月29日

摘要: _cdecl 是C Declaration的缩写,表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数无需要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。_stdcall 是Standard Call的缩写,是C 的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针。这些堆栈中的参数由被调用的 函数在返回后清除,使用的指令是 retn X,X表示参数占用的字节数,CPU在ret之后自动弹出X个字节的堆栈空间。称为自动清栈。函数在编译的时候就必须确定参数个数 阅读全文
posted @ 2011-06-29 17:42 心翼 阅读(3755) 评论(0) 推荐(1) 编辑

2011年3月7日

摘要: C#中的预处理指令 作为预处理中的一对:#region name ,#endregion可能是大家使用得最多的,我也常用它来进行代码分块,在一个比较长的cs文件中,这么做确实是一件可以让你使代码更清晰的好办法,VS也自动用这个来包含自动生成的代码,它这么做既可以使开发人员更清晰的查看自己的代码,也开了一个好头,使更多人使用#region。 C#中还有好几对预处理指令,可能大家就用得比较少了。 #define symbol #undef symbol #if symbol [operator symbol2]... #else #elif symbol [operator symbol2] #e 阅读全文
posted @ 2011-03-07 17:20 心翼 阅读(298) 评论(0) 推荐(0) 编辑