使用互斥对象Mutex为什么不能实现线程同步?

    有过多线程开发经历的人,对于“互斥对象,临界区,事件,信号量”这四个对象肯定不会陌生。就我自己而言,它们真是"让我欢喜让我忧"。"让我欢喜" 因为利用它们往往能解决掉非常棘手的问题,例如经典的"生产者-消费者"问题,"让我忧"因为,我经常把它们搞混淆,用的时候不知道到底该用哪个好,比如我觉互斥对象和信号量这两者很相似,在解决"生产者-消费者"问题时,为了实现线程同步很多例子中都用了信号量,为什么不用互斥对象实现呢?我试图用互斥对象来做了一下,结果失败了。       今天我决定解决掉这个问题。仔细...
编程经验 | 2008-07-31 11:55 | 阅读 15129 次 | 评论 1 条

[经验]由OpenProcess的返回值引出"句柄表"

//redice 2008.7.20//redice@163.com &#160; 晚上做了如下的一个小实验,试验结果让我大吃一惊。也就有了这篇日志。#include <windows.h>int main(){&#160;DWORD dwPID=2096;&#160;HANDLE hProcess=NULL;&#160;//根据PID获取进程句柄&#160;hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,dwPID);&#160;printf("process handle:%p\n",hProcess);&#160;CloseHandle...
默认分类 | 2008-07-20 21:52 | 阅读 10043 次 | 评论 0 条

[原创]通过HOOK获取QQ游戏登录密码

//通过HOOK获取QQ游戏登录密码//by redice 2008.7.19//redice@163.com不是什么新鲜货了,只是想重温一下钩子及 DLL的编写...先发个程序运行效果图: 不得不先说一下API函数SendMessage:使用SendMessage向编辑框窗口发送WM_GETTEST消息,可以轻易获取到编辑框的内容(就算这个窗口不属于同一进程)。但是有一个特例,那就是当编辑框窗口具有ES_PASSWORD风格(即密码输入框)且不输入同一进程时,使用上面的方法就失效了。通俗的说,就是当你要使用SendMessage读取的密码框不属于同一个进程时,是读取不到任何内容的。这...
默认分类 | 2008-07-19 14:56 | 阅读 7910 次 | 评论 2 条

[经验]VC++编程技巧[不断更新中]

//2008.7.16&#160;&#160; 2条[1]//防止程序的多个实例同时运行HANDLE hMutex=CreateMutex(NULL,FALSE,"IADSOnlyOnce");/命名Mutex是全局对象 在所有的process都可以访问到&#160;&#160;&#160;&#160; if(ERROR_ALREADY_EXISTS==::GetLastError()){&#160;&#160;&#160;&#160; &#160; AfxMessageBox("该程序已经在运行中...");&#160; ExitProcess(1);}&#160;&#160;&#16...
编程经验 | 2008-07-16 16:37 | 阅读 11055 次 | 评论 0 条

[转载]深入浅出之正则表达式(五)

14. 向前查看与向后查看 Perl 5 引入了两个强大的正则语法:“向前查看”和“向后查看”。他们也被称作“零长度断言”。他们和锚定一样都是零长度的(所谓零长度即指该正则表达式不消耗被匹配的字符串)。不同之处在于“前后查看”会实际匹配字符,只是他们会抛弃匹配只返回匹配结果:匹配或不匹配。这就是为什么他们被称作“断言”。他们并不实际消耗字符串中的字符,而只是断言一个匹配是否可能。 几乎本文讨论的所有正则表达式的实现都支持“向前向后查看”。唯一的一个例外是Javascript只支持向前查看。 · 肯定和否定式的向前查看 如我们前面提过的一个例子:要查找一个...
转载 | 2008-07-13 16:45 | 阅读 3939 次 | 评论 0 条

[转载]深入浅出之正则表达式(四)

11. 组与向后引用 把正则表达式的一部分放在圆括号内,你可以将它们形成组。然后你可以对整个组使用一些正则操作,例如重复操作符。 要注意的是,只有圆括号“()”才能用于形成组。“[]”用于定义字符集。“{}”用于定义重复操作。 当用“()”定义了一个正则表达式组后,正则引擎则会把被匹配的组按照顺序编号,存入缓存。当对被匹配的组进行向后引用的时候,可以用“\数字”的方式进行引用。<<\1>>引用第一个匹配的后向引用组,<<\2>>引用第二个组,以此类推,<<\n>>引用第n个组。而<<\0>>则引用整个被匹配的正则表达式本身。我们看一个例子。 假设你想匹配一个HTML标签的开...
黑客编程 | 2008-07-13 16:43 | 阅读 5613 次 | 评论 0 条

[转载]深入浅出之正则表达式(三)

7. 使用“.”匹配几乎任意字符 在正则表达式中,“.”是最常用的符号之一。不幸的是,它也是最容易被误用的符号之一。 “.”匹配一个单个的字符而不用关心被匹配的字符是什么。唯一的例外是新行符。在本教程中谈到的引擎,缺省情况下都是不匹配新行符的。因此在缺省情况下,“.”等于是字符集[^\n\r](Window)或[^\n]( Unix)的简写。 这个例外是因为历史的原因。因为早期使用正则表达式的工具是基于行的。它们都是一行一行的读入一个文件,将正则表达式分别应用到每一行上去。在这些工具中,字符串是不包含新行符的。因此“.”也就从不匹配新行符。 现代的工具和语言能够将正...
转载 | 2008-07-13 16:37 | 阅读 4975 次 | 评论 0 条

[转载]深入浅出之正则表达式(二)

5. 字符集 字符集是由一对方括号“[]”括起来的字符集合。使用字符集,你可以告诉正则表达式引擎仅仅匹配多个字符中的一个。如果你想匹配一个“a”或一个“e”,使用<<[ae]>>。你可以使用<<gr[ae]y>>匹配gray或grey。这在你不确定你要搜索的字符是采用美国英语还是英国英语时特别有用。相反,<<gr[ae]y>>将不会匹配graay或graey。字符集中的字符顺序并没有什么关系,结果都是相同的。 你可以使用连字符“-”定义一个字符范围作为字符集。<<[0-9]>>匹配0到9之间的单个数字。你可以使用不止一个范围。<<[0-9a-fA-F] >>匹配...
转载 | 2008-07-13 16:30 | 阅读 3794 次 | 评论 0 条

[转载]深入浅出之正则表达式 (一)

文章出处:http://www.cnblogs.com/dragon/archive/2006/05/08/394078.html 前言: 半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程。于是一直想把他翻译过来。这个愿望直到这个五一长假才得以实现,结果就有了这篇文章。关于本文的名字,使用“深入浅出”似乎已经太俗。但是通读原文以后,觉得只有用“深入浅出”才能准确的表达出该教程给我的感受,所以也就不能免俗了。 本文是Ja...
转载 | 2008-07-13 16:28 | 阅读 3969 次 | 评论 0 条
浏览576229次