Creative Commons License
本Blog采用 知识共享署名-非商业性使用-禁止演绎 3.0 Unported许可协议 进行许可。 —— Fox <游戏人生>

游戏人生

游戏人生 != ( 人生 == 游戏 )
posts - 50, comments - 350, trackbacks - 0, articles - 7
共3页: 1 2 3 
@叶先生
你给的第一个的例子并不太合适,阻塞实际是指因继续执行的条件不满足(事件未到达)而挂起等待,test1实际并未挂起,只是一直在执行一个空循环而已。
test2只是 多了一个DoEvent,如果讨论同步还是异步,实际要视DoEvent而定,若DoEvent像你所说,那可以作为异步看待,如果DoEvent阻塞等待事件到来,则成了同步,但这都与你给的循环没有关系。

至于你说test1会“卡死”,那是因为单线程的话,需要不停的执行循环,但没有阻塞,因为循环一直在跑:)
呵呵,我也同意算上空行和注释等。

这个不用这么较真儿吧?
麻烦大家“阅读全文”后回复,谢谢:D
很诱人的功能,先MARK一个,明天好好研究研究:D
并不是所有基类的析构都要virtual的,此例即不需要,因为这儿的析构是trivial的,推荐阅读lippman的<inside the c++ object model>.

re: 让人无语的boost Fox 2008-10-15 12:04
你停太久了……
呵呵,整理的不错:)
re: 日志该这么记录 Fox 2008-10-10 14:55
@阿福
这个是成员函数,所以后面加了;这儿没有上下文,去掉更好理解了。
前面加是笔误:)。
@Condor
你说的这个问题我也考虑了,既然被提到,可以查看新一篇:http://www.cppblog.com/Fox/archive/2008/10/10/63625.html
@sl
我在上面提到“我们说某某操作是非阻塞的,是因为操作结果会通过异步方式返回”,Douglas说的是there is no async processing if without a proper configuring,意思是:

非阻塞之后可以不做异步处理。

但非阻塞和异步仍然是紧密联系而非区别非常大。
Douglas这本书我手头现在没有:(,翻了一下adv. pro. in UNIX,没有看到详细说明:(。
@LOGOS
你说的对,但如果说“非阻塞的东西不一定会给你回调通知”,那么这时候在所阻塞和非阻塞也就没有意义了,既然不需要回调/事件通知或其他任何形式的回馈,也就没有阻塞的意义了,就是普通调用,无所谓阻塞不阻塞了,对吧?
select在等待时间timeout>0的情况下是阻塞的,这时才有你所说的同步。
如果timeout==0,才是非阻塞的,有无数据都是立即返回,自然没有同步问题。
非常感谢
比如发送缓冲区中一段数据(一个整型数:0x0A0B0C0D),最合适的发送方式当是从低址到高址顺序发送,接受也将是顺序接收到0A,0B,0C,0D这样,big-endian正是这种顺序。
空格,呵呵,谢谢提醒!:D
re: 周末-无题 Fox 2008-07-24 13:54
虽说一三五不论,可这二四六也不分明啊,平仄感觉也谈不上。

心态和所有人也差不多吧,每个人都是悠然于自己所认为的混沌中,其实,混沌本不存在,是心混沌……

只是,谁能不牢骚满腹呢?又如何悠然呢?

那些没有责任感的人才真正悠然……

忽然想起最近老大的一句:产品如人品……

小踩一脚,哈哈!
构造失败主要是指new失败,所以前面也有说不要让构造函数做太复杂的事情,可以专门用一个Init去做,抛不抛异常,用哪个版本的new,关键在于对象构造失败之后,使用的时候如果不做检测会造成代码崩溃,即使检测出构造失败,也无法继续执行,还是要像处理异常一样解决问题。
stl之所以会将所有实体的定义和实现置于std命名空间下,正是为了避免出现命名冲突(string\map\vector\list等等),如果使用了using或前置声明之类,效果等同于将其纳入当前命名空间,所以说会导致不明确的行为,命名冲突、不可移植,不知道你同意否?
恩,看过这个指南之后,感觉是因为Google的项目中大多没有使用高级C++特性,所以对于很多特性都是尽量避免使用,对于自己开发的项目制定一个自己的风格,大家一起遵循,也基本是从软件工程的角度,我比较赞成在底层模块中使用,上层逻辑可以少用即可。
re: 日志该怎么记录? Fox 2008-07-18 15:20
@LOGOS
事实上,在没有dump的时候,我都是从日志找bug的。
re: 日志该怎么记录? Fox 2008-07-18 12:36
我日......你
这一点在下一篇C++特性中有对禁止使用C++异常的说明,不仅仅是针对构造函数,是针对整个coding。
不管怎么说,都只是一种编程约束,有利必有弊,感觉更多是从软件工程的角度给出的约束。
Fn = (phi^n)/(5^(1/2)), phi = 1/2(1+(5^(1/2))).
——计算机程序设计艺术. 第一卷. sec. 1.2.8
我对小波的了解也只是皮毛,是不是变换层数少了的原因呢?
瞎猜的。

但绝不是小波变换的一点瑕疵;)多半是重构时的问题。
Oh, my God...
哦,俄滴聖啊...
Sorry,我以为都必须放在首页#--"
谢谢提醒;)
是的,debian是GNU的一款Linux,ubuntu据说就是基于debian的。我也是刚开始用,主要是为了学习一下Linux的使用;)
re: Api Hook 细析(一) Fox 2008-05-15 20:37
為什么我的評論沒了??強烈抗議!!
看来,这一块的东西,我又可以偷偷懒,直接请教你了;)
正要看看正则表达式,不妨写详细点,参考一下:D
还是写出来看的清楚:static unsigned int __stdcall ThreadFunc( void *p )
{
Listener *listener = (Listener*) p;


应该是
Listener *listener = (App*) p;
我的本意是找一种最优算法,可惜数学基础太差,对各种算法及其复杂性的计算力不从心……
你这个在我文中给出来了,基于冒泡排序的思想。
次数不能达到最少。
这个问题,如果有哪位TX实现了,给个链接我去学习一下,如果只是简单给出分析的话,就未必经得住推敲了……
老师教我、爹妈生我、朋友帮我、共产党哺育了我、全国人民感染了我……
@cppexplore
你看看这个吧:http://book.csdn.net/bookfiles/656/10065620784.shtml
看看“标准”答案里有没有:D
@Wang Feng
呵呵,MS的面试题啊:D
@Xin
输出的都有啊:-),总共81-3×3×3=54种合法位置。
给的图也很清楚啊,看不清的话,直接查看原图吧:D。
我还是中规中矩的按照题目的要求去考虑如何只用一个变量、一个循环实现。写完了,贴上来才看到书上的几种方案,本来想写N>=3的一个统一算法,后面考虑了一下,有点麻烦,也未必能实现,就算了。

另一个就是本来想加一个宏的实现,效率又高,而且一个变量都不用。就一个OUTPUT。

#define OUTPUT CALC(3)
#define CALC(N) ....
#define ...

本质上还不如上面的代码。后面觉得有点偷奸耍滑的味道,算了。

楼上说的方法也是些“奇技淫巧”了,后来看了下书上的,居然还有用结构体变量的,我心想:成员变量就不是变量了?
恩,MS的面试题多如此类,翻一翻还是开阔思路
re: 2008-02-15买了新车! Fox 2008-04-09 23:44
如果在成都就好了……
之所以保留诸多术语,是为了以后加到论文里方便,但仔细看的话,还是可以看得懂的,如果懂点数论知识的话,更好。
@Kevin Lynx
Xn+1 = (a*Xn+b)mod c
a, b, c通常是素数(仅仅是通常),说白了,这样一个线性同余函数其实就是所谓的Hash函数,选值不是固定不变的,ms Knuth的编程艺术(Vol. 2?)中对a, b, c的选取原则有提供。

@len
马氏回转是比较快的了,只是不是密码学安全的算法。

@杜中伟
没有考虑过遗传算法、模糊理论、神经网络能否提供真正随机的实现。不过这个倒是可以考虑,个人感觉上面几种即使实现起来,效率是个问题。
对异常处理没有特别关注过,搬着板凳先看到
1、是指继续完成新的wsarecv。
2、我的理解是socket和wsasocet的区别只是wsasocket可以自由决定是否使用重叠I/O,和阻塞与否没有关系。
3、恩,应该是允许auto才对。
4、你让我不得不把一个本来认为理解了的问题思考再思考,的确有压力!
re: 不怕无知,但怕无畏 Fox 2008-03-27 13:40
@yafare
来这儿的每个人都是有大脑的,回复的人更是经过大脑才说过的话。

我个人感觉我这篇blog和回复没有任何恶意,而且初衷也是让自己有时间反思一下自己,可以说,主要是写给自己的。

但很多回复的朋友认为我是炫耀或者故意刁难,我实在冤枉。
re: 不怕无知,但怕无畏 Fox 2008-03-27 13:31
@yafare
没有看过crt源码
至于给出的代码没有考虑首地址对齐,是因为我看过云风的这篇blog,上面对于4B以上,没有首地址对齐的汇编。

而且VC默认结构成员对齐是8B,所以就把前面一点去掉了。

如果真看过这样源码的我还不会去问了,就像我没有看过memcpy和memmove(当然,刚才看了),我只是给出自己的理解,我自己还是偏向于问题的思考重于知识的学习。所以你提到mmx、sse、crt源码,可以展示知识面的广和深,却不能完全满足对人的考察,当然,如果对这个点能够掌握这样的知识,至少可以说明他动过脑子了。

;memcpy.asm - contains memcpy and memmove routines
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
;Purpose:
; memcpy() copies a source memory buffer to a destination buffer.
; Overlapping buffers are not treated specially, so propogation may occur.
; memmove() copies a source memory buffer to a destination buffer.
; Overlapping buffers are treated specially, to avoid propogation.

;memcpy - Copy source buffer to destination buffer
;
;Purpose:
; memcpy() copies a source memory buffer to a destination memory buffer.
; This routine does NOT recognize overlapping buffers, and thus can lead
; to propogation.
; For cases where propogation must be avoided, memmove() must be used.
;
; Algorithm:
;
; void * memcpy(void * dst, void * src, size_t count)
; {
; void * ret = dst;
;
; /*
; * copy from lower addresses to higher addresses
; */
; while (count--)
; *dst++ = *src++;
;
; return(ret);
; }
;
;memmove - Copy source buffer to destination buffer
;
;Purpose:
; memmove() copies a source memory buffer to a destination memory buffer.
; This routine recognize overlapping buffers to avoid propogation.
; For cases where propogation is not a problem, memcpy() can be used.
;
; Algorithm:
;
; void * memmove(void * dst, void * src, size_t count)
; {
; void * ret = dst;
;
; if (dst <= src || dst >= (src + count)) {
; /*
; * Non-Overlapping Buffers
; * copy from lower addresses to higher addresses
; */
; while (count--)
; *dst++ = *src++;
; }
; else {
; /*
; * Overlapping Buffers
; * copy from higher addresses to lower addresses
; */
; dst += count - 1;
; src += count - 1;
;
; while (count--)
; *dst-- = *src--;
; }
;
; return(ret);
; }

这是给出的基本的算法,都是bytecopy的,但具体的实现不是这样子的。
下面是汇编实现,考虑对齐的。
; - move x = ((4 - Dest & 3) & 3) bytes
; - move y = ((L-x) >> 2) dwords
; - move (L - x - y*4) bytes

crt源码:
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
感觉没有使用dwordcopy。

对于memcpy这个问题,看不看crt源码和汇编,相信很多人在我写过这篇文章和前面的回复之后都可以知道怎么实现了。

对于技术批评,我会虚心,尤其是和你们的讨论过程中,我还特意看了crt源码和生成的汇编,所以,非常感谢,以后如果再跟别人讲问题的时候,自己还是要把问题搞得颇为清楚才好。

但对于人身攻击和做人问题,我就恕难忍受了。
re: 不怕无知,但怕无畏 Fox 2008-03-26 10:55
一天两天怀不上,是正常的,可以接受的。
如果100天都怀不上,你是不是还有性趣?
re: 不怕无知,但怕无畏 Fox 2008-03-26 10:53
照楼上的意思,我该怎么做?
我只想找个可以干活的人,妄谈其他都是多余的。
如果找老婆只为传宗接代,是不是生育能力最重要呢?你告诉我感情可以培养、孩子可以领养,不都TM扯淡呢吗?
re: 如何反外挂? Fox 2008-03-24 09:04
其情也肯肯
其言也凿凿
共3页: 1 2 3