摘要:
线程用户级同步有多种方法,包括了互锁和关键区等。这里将重点介绍如何使用关键区的方法来实现线程在线程级的同步。1.对关键区的使用[代码]2. 注意点:(1)关键区域只是对资源的锁住,并不是说锁住其它的线程。具体来说,当线程1用到了资源a,并且使用了关键区域,在它得到许可进入到关键区域中后,他仍然存在几率被置换出可调用线程,进入等待线程,这是如果线程2运行到了有相同关键区域变量的EnterCritic... 阅读全文
摘要:
1.线程的创建线程的创建有多种方式,不过例如CreateThread之类的API不宜使用,因为C++ 运行库里面有一些函数使用了全局量,如果使用 CreateThread 的情况下使用这些C++ 运行库的函数,就会出现不安全的问题。而 _beginthreadex 为这些全局变量做了处理,使得每个线程都有一份独立的“全局”量。所以“绝对不要调用系统自带的Crea... 阅读全文
摘要:
线程定义,内存空间,线程和消息循环之间的关系 阅读全文
摘要:
通过实验,我发现以下方法可以在vs2005下编译通过,不过在运行时有时仍然出现了不确定现象。具体原因有待继续排查。一、使用 /clr 编译 MFC 可执行文件或规则 DLL1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。2、展开“配置属性”旁边的节点并选择R... 阅读全文
摘要:
调用ShowWindowAPI函数你必须传送Application对象句柄到ShowWindow函数。如果你传送给ShowWindow函数的句柄是主窗口,那么主窗口将最小化到桌面(desktop)而不是任务条(taskbar)。 //最大化: 传送SW_MAXIMIZE到ShowWindow ShowWindow(Application-Handle,SW_MAXIMIZE); //最小化:传... 阅读全文
摘要:
以下示范了如何在非console程序下打开控制台,个人认为比OutputDebugString更有用哦.#include stdio.hAllocConsole();//打开控制台if ( freopen("CONOUT$", "w+t", stdout) ){//控制台初始化成功}//////printf("...");//////fclose(stdout);//关闭控制台各个函数说明函数名: freopen 功 能: 替换一个流 用 法: FILE *freopen(char *filename, char *type, FILE *stream); 位置:stdio.h 阅读全文
摘要:
主要思路:1、将wchar_t*的字符串转为char*字符串2、然后直接用std::string的operator=做赋值操作案例://std::string的目标 std::string szDst; //wText为wchar_t*的内容 wchar_t wText[20] = {L"宽字符转换实例!OK!"}; //WideCharToMultiByte的运用 DWORD dwNum = ... 阅读全文
摘要:
<转自http://c.chinaitlab.com/cckaifa/discreteness/200903/779453.html>最近开始做一个多点触控的课题,网上查阅许多资料后,发现已有先辈把核心函数写好,并建立了一个库——Touchlib.而Touchlib库函数最终调用的是OpenCV里的函数,为了在自己的课题方案中借鉴Touchlib的成熟算法,有必... 阅读全文
摘要:
1.SendMessage 和 PostMessagePostMessage 和SendMessage的区别主要在于是否等待其他程序消息处理。PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行;而SendMessage必须等待其他程序处理消息后才返回,继续执行。这两个函数的返回值也不同,PostMessage的返回值表示PostMessage函数执行是否正确,而Se... 阅读全文