小军军 2011-12-09 11:47
看到前3行忍不住回一句:写的好,受益了。
iTech 2011-09-14 11:32
明白了,你是要让elf的文件在windows运行哦,我还以为是工具的移植呢。支持!
gussing 2011-09-05 10:31
@iTech
好好看原帖
iTech 2011-09-05 09:30
UnxUtils应该就是你要找的
iTech 2011-09-05 09:27
这个UnxUtils不就是了吗
gussing 2011-09-04 11:09
[quote]pulihe:
真是好东西
如果博主的linux环境是rhel6或者centos6就最好了
这样就很有实用价值
另外提问,win7 x86上是否能运行?如果能那就很具备商业价值了[/quote]
这个提过很多次了,NPTL没法实现,所以2.5.9以上内核的特性模拟不了。。。
另外,我都是在我的32位win 7上测试的,事实上也只有这个平台测过,其他平台不保证能跑。
pulihe 2011-09-04 08:13
真是好东西
如果博主的linux环境是rhel6或者centos6就最好了
这样就很有实用价值
另外提问,win7 x86上是否能运行?如果能那就很具备商业价值了
jctang 2011-09-04 08:09
虽然看不懂, 赞研究精神!
麦田里的守望者 2011-08-27 07:22
@gussing
不错,等写完了我也来凑热闹哈哈
gussing 2011-08-26 00:04
@麦田里的守望者
时间和地点很重要,还有几篇后续的,等全写完了我po到cu上,感兴趣到应该就多了
麦田里的守望者 2011-08-25 23:50
这篇文章比较给力,只是感兴趣的比较少啊
gussing 2011-08-25 16:48
@乐章
一般大,两天的工作量
乐章 2011-08-25 16:45
工作量比较大啊
OwnWaterloo 2011-03-28 18:39
@gussing
恩,对, TerminateThread 比 ExitThread 危险太多, 杀人越货而非自杀……
gussing 2011-03-28 12:34
@OwnWaterloo
我仔细review了一下这篇文章,发现误解主要出在“不能主动调_endthreadex"上,实际我想说的是"不能主动调TerminateThread",因为我关注的重点是一个线程被另一个线程强退时的情况。写的时候没仔细看。
OwnWaterloo 2011-03-28 11:16
@gussing
windows许多高级特性我也不懂, 所以文章就没细看……
是同一个人……
cnblogs注册有一段时间了, 因为blog程序比cppblog做得好。
但这里主要关注的是.net, 只好潜水了……
gussing 2011-03-27 10:02
你跟CU里的OwnWaterloo是同一个人吧?大牛怎么有空来cnblog玩啊
gussing 2011-03-27 10:01
太赞了,受教!
不过有个小小的问题我得申辩下:我没说_endthreadex不能碰。
除此之外。。。你都是对的,特别是最后一句。
OwnWaterloo 2011-03-27 07:51
不够准确。
1. _endthreadex与 ExitThread 绝对不能碰?
不碰ExitThread该怎么正常的撤销线程?
不碰_endthreadex怎么回收_beginthreadex分配的资源?
要正常撤销由_beginthreadex产生的线程,这两函数是一定得去碰的。
问题是由谁去碰而已。
新创建的线程栈上的实际代码类似:
ExitThread( thread_routine(arg) );
_endthreadex( thread_routine(arg) );
如果thread_routine能返回, thread_routine的调用者自己就会调用_endthreadex与ExitThread。
上面说了, 这是两函数是正常退出的唯一方法。
所以, 主动调用ExitThread与_endthreadex与线程函数返回后被调用的区别就是: 从调用点所在frame到ExitThread(thread_routine(arg))所在frame的余下代码(这里面就包括C++栈上对象的析构函数)不能被执行。
[b]仅此而已[/b]。
这与"是否资源泄露"是完全不相干的问题。
主动退出, 也可以写出不泄露的代码。
等线程函数返回, 也可能写出泄露的代码。
2. CreateThread 别碰? 必须_beginthreadex?
你可以试一下, ChreateThread产生的线程里面使用的errno与主线程的errno是否是分开的, strtok这样的函数是否正常工作。
c runtime, 至少ms的是这样, 在发现TLS没有被正确初始化(线程不由_beginthread/ex产生)的时候会自行初始化。
所以这并不是什么大问题。
唯二两问题就是:
i. 如果由线程函数退出, 返回到的frame是
ExitThread(thread_routine(arg));
c runtime所用的资源无法被回收
如上所说, 可自行调用_endthreadex
ii. 如果调用了需要SEH才能实现的功能: raise/signal
这与TLS不同, 少了一个__try块是不能再后面补上的。
这才是比较严重的问题。
但windows下开发, 使用signal的代码确实不多。
3. _beginthreadex的难处
CreateThread实际如下:
CreateRemoteThread(GetCurrentProcess(), ...
也就是说, 如果打算创建一个remote thread, 是没有对应的c runtime版本的。
这个时候, 只有深入了解这些函数之间的区别, 而不是[b]笼统的说这不能用那不能碰[/b], 才能正确完成所需功能。
gussing 2011-01-23 23:54
@Ivony...
果然聊跑偏了呵呵,不过偶尔说说也无妨。两极分化并不是不可避免的趋势,事实上只要程序员群体不集体堕落,这趋势完全可以避免,可惜正如你说的,有些人的理想就是当机械手,谁也救不了他。
我一直认为人脑除了细胞之间的物理运行外,还有其他什么东西在里面,我讲不到很清楚,但我愿意将它想成是上帝的礼物。而软件作为纯粹的人类思维的产物,跟驱动机械臂运转的那写齿轮组是有本质差别的,我更愿意把它相成是类似诗歌,音乐等的东西,都是纯精神的产物,只不过软件这个精神产物可以影响现实世界,而不仅仅是重新反作用于精神。你说软件是砸别人的饭碗,其实这类饭碗本来就不该让那些人端,之前的做法只是在没办法的情况下做了些妥协。举个例子,电子邮件这个东西毁掉了传统邮件,这能算抢饭碗吗,我觉得不能算,倘若人脑之间发射脑电波就能通信,邮件这种东西还会存在吗,肯定不会了。邮件之所以会存在,是人脑受制于现实中没法做到的事做的妥协。你看邮政局现在不是转做物流了吗,这才是它的本职,邮件是它并不胜任的工作,这工作被电子邮件接管过来而已。返回来说软件,我认为软件的作用就是扩展了人脑的物理能力,使它稍微能回复到它应有的水平一点点。
我不知道我表述的够不够清楚,我想讲的是,思维相比其他物理运动是“高级”的,它跟流水线的差别是本质上的。而软件工程这类活动虽然出于企业效益追求等各种因素搞的还挺成功,但它们都是邪恶的。
Ivony... 2011-01-23 19:44
程序员两极分化是软件工业不可避免的趋势,我们能努力做到的是成为设计机械手的,而不要成为机械手。但消灭机械手却是不可能的,有些人的理想就是机械手,谁知道呢。或许可以将这些人用另外的名词称呼而不是程序员,但工业化还就需要一些听话的机械手,在这些工作被机器替代之前。
或者说的更邪恶些,让别人没钱赚才能赚到更多,软件带来的效果主要有两点:提高生产效率和砸人饭碗。所以软件本身说白了就是让别人没饭吃来喂饱自己的。然后这些人再去寻找更多让别人没饭吃的工作,在这个过程中社会进步了,地球进一步被人类感染。。。最终感染其他行星。
gussing 2011-01-21 23:44
@hoodlum1980
是,版权所有,并且谢绝转载
之前我还有写一个播放器系列,也是原创,不过某些傻屄站长不打招呼就转载走了,还不留链接,所以那个系列就停了。
我不希望这个系列也停掉。
Nana's Lich 2011-01-21 18:34
喜欢你最后一句话。
hoodlum1980 2011-01-21 18:15
请问此系列文章是楼主原创吗。
Sai~ 2011-01-21 15:20
最后一句很经典,我觉得绝大多数*NIX 的人员,对windows 内核一无所知,天天就会叫嚣
RMay 2011-01-21 14:59
有意思
jing.li 2010-05-27 09:59
楼主万岁~~~坐等楼主新文章
jing.li 2010-05-27 09:31
期待更新。。。请问怎么用directshow截取http://类型的视频的某一帧图呀??我有一个directshow截取本地视频的程序,但是把地址改成远程的就报错说截图失败
ljn 2010-04-23 09:38
收到了,谢谢。
楼主真细心,富有共享精神。多多交流。
gussing 2010-04-22 19:29
http://www.reactos.org/zh/index.html
ljn 2010-04-22 17:27
楼主,哪里看的代码,WDK吗?如何学习到的方法能否分享下。
Kelvin o○ 2010-03-12 11:33
坐等博主继续播放爱饭岛.AVI
ejoyc 2009-11-21 19:39
学习!
很受教
wachmc 2009-11-06 10:50
楼主加油!!!!
左岸之天行者 2009-08-20 18:03
谢谢楼主的辛勤劳动
韦恩卑鄙 2009-07-06 23:21
很感兴趣 收藏了
木.木 2009-07-01 15:41
网上有一篇 DirectShow截图的播放器,,但是声音输出不了,,,如果有时间可不可以帮我看一下。... 我QQ406548218 ..我把程序发给你..谢谢。..
木.木 2009-07-01 15:40
Volume
声音好象控制不了。...
钱小柜 2009-06-26 09:02
弟子超越了师傅,谭老可以含笑了
gussing 2009-06-25 21:45
@Gray Zhang
+跟operator+()虽然都可以称之为“运算符”,但它们是有差别的,你应该知道。所以说中文太暧昧,很多时候容易引起误解。为防止再次被Gray Zhang这样的语文爱好者找茬,我决定改一改原文,嗯。
Gray Zhang 2009-06-25 20:19
你觉得operator不叫运算符叫什么呢,重载+运算符还能搞出operator +呢,那么+也不是运算符了?
gussing 2009-06-11 15:55
--引用--------------------------------------------------
陛下: --引用--------------------------------------------------
gussing: @matz
不跟任何东西比,就是写着玩
……
--------------------------------------------------------
希望楼主加油,个人觉得从兴趣出发做些开发怡情益智,而且创意或许还多些。
不过不要太容易被别人干扰,尤其动怒什么的,呵呵。
--------------------------------------------------------
呵呵,多谢兄台鼓励
不过动怒这事,我知道有些人涵养很好,被残障认识骚扰也能不怒,但小弟我脾气向来不好,看到这类货总是想灭之而后快。。。
我可以试着改改。。。。
陛下 2009-06-11 15:12
--引用--------------------------------------------------
gussing: @matz
不跟任何东西比,就是写着玩
……
--------------------------------------------------------
希望楼主加油,个人觉得从兴趣出发做些开发怡情益智,而且创意或许还多些。
不过不要太容易被别人干扰,尤其动怒什么的,呵呵。
龙行天下 2009-06-11 14:53
我也想加入,308052915
gussing 2009-06-11 14:11
@matz
不跟任何东西比,就是写着玩
乐意看就看,不乐意看就滚蛋,又没收你钱,装什么逼啊你,装的有你妈像吗?
matz 2009-06-11 13:33
你这个播放器跟mplayer.exe相比,有什么优势
这世界上又多一个垃圾了
gussing 2009-06-11 09:48
@陛下
你指的流媒体是什么?
要说简单也简单,写个简单的Source filter就好了
要说复杂也很复杂,要是你想收无线电视啥的,那要写很大一坨代码
我这个东西目前是以文件播放为主,要是一切顺利并且我兴趣还在,会做电视播放和流媒体的
陛下 2009-06-11 09:37
最近实现了一个p2p的wav文件播放“系统”(代码量很小),而我的目标是实现类似的这样一个视频播放系统,通过调用各类播放器组件发现,他们接受的参数始终是 filename 等,但我希望提供的是媒体流,进行“实时”播放。尝试一段时间后发现c#实现这样的播放器改造无望,正想着学点 c++,做出自己想要的组件来。不知道能不能从你的项目里找到捷径呢,呵呵。
gussing 2009-06-11 09:33
@钧梓昊逑
不乐意写注释,看得懂看,看不懂问
钧梓昊逑 2009-06-11 08:59
唉,这代码写的,楞是一行注释都没有~~~