终于有了间茅草棚

——我走时,会否有随风飘散的痕迹?

外面的风好大,雨也淅淅沥沥的。

世间种种的诱惑不惊不扰我清梦,山高路远不绝我追踪你绝美的笑容,登高一呼时才懂始终在为你心痛,俯首对花影摇动都是东风在捉弄

世间种种的迷惑都是因你而猜错,水光月光又交融描述这朗朗的夜空,生死到头的相从似狂花落叶般从容,当一切泯灭如梦就在远山被绝
随笔 - 42, 文章 - 2, 评论 - 273, 引用 - 3

导航

<2006年3月>
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678

留言簿(10)

随笔档案

文章档案

收藏夹

其它的我

友情连接

网页连接

搜索

最新评论

  • 1. re: 陈刚
  • 中间件主要的好处在于便于整合,就像一个接口规范和标准。像游戏开发中3D图形技术有两套,有的游戏直接基于D3D或OenGL开发,现在更多的是基于一些图形引擎,像Ogre,Irrlicht等,在这些图形引擎下面去和具体的图形API打交道,从这个意义上来说Ogre和Irrlicht拥有一定的中间件的涵义(这些图形引擎不只是中间层,还包含有场景管理、渲染逻辑等更多内容)。加了这样一层后,当支持新的D3D10和D3D11时,中间层作出修改,原应用不需要修改就可运行,还有移植到支持OpenGLES的设备时,也是可行的。
  • --清风雨
  • 2. re: linux常见开发问题,.JPEG parameter struct mismatch
  • 你说的3.JPEG parameter struct mismatch没看明白,我现在也遇到了同样的问题,
    ”编译libjpeg的make文件里定位输出生成jpeg的地方“指的是哪啊,
    “打印出相关参数”也不明白
    “前台运行同样的./configure”什么意思?
    帮帮我了,谢谢!我邮箱litao_hao@16.com   qq;40362095
  • --haolitao
  • 3. re: linux移植建议
  • 这个学习了
  • --陈刚
  • 4. re: 软件开发模式猜测
  • 脚本在其可配置性、可扩展性上性能应该是已经超越了中间件技术。

    中间件在对其扩展、更新、配置时不知是否能做到依赖它的程序不中断运行呢
  • --陈刚
  • 5. re: 软件开发模式猜测
  • 对 “中间件模式” 还真不太了解。 

    不知 “中间件模式” 是否会影响运行、调试以及维护成本,以及如何能抽象出中间层?
  • --陈刚
  • 6. re: void *几用
  • class Sample
    {
    public:
        void draw( void *g );
    };

    我个人其实并不太认同这种做法,虽然实现了抽象但会加大维护代价
  • --陈刚
  • 7. re: 用自己的话浅谈封装
  • 封装也是一个不断完善的过程,当然再经过一段时间后随着技术的进步思想的成熟,也会推翻重来。
  • --陈刚
  • 8. re: linux常见开发问题
  • xargs不错,蛮有用的。
  • --hATEmATH的网上田园
  • 9. re: 关于质数(素数)的算法

  • 是AKS方法。
    http://mathworld.wolfram.com/AKSPrimalityTest.html


  • --perry
  • 10. re: 关于质数(素数)的算法
  • 为了在数字比较小时计算得快些,可以应用一些初等数论的结论:

    1]
    仅计算6n+1和6n+5(n=1,2,3,...)形式的数。易知6n+2和6n+4是2的倍数,6n+3是3的倍数。因为2和3的倍数最多。
    2]
    根据“合数的最大的素因数都不大于它的平方根”定理,每次分解仅算到被分解的平方根为止即可。
    证明(一般的证明都不完整):
    设N=P*Q,P和Q是N的不少于1个素因数的乘积(指出这点很重要)。反证法可证P和Q都小于或等于N的平方根(否则P*Q>N)。等号当且仅当P=Q=N的平方根时成立(这时N是一个素数的平方)。

    1]可减少2/3的计算量,2]可再减少1/2的计算量。即为原计算量的1/6。

    几百位数位的数,建议采用ASK方法。





  • --perry
  • 11. re: 关于质数(素数)的算法

  • 素因数分解是一个NP问题。
  • --perry
  • 12. re: void *几用
  • to oshj:
    最近才悟道这个用法,没想到你都用了很多了。

    to brent:
    不是为了玩才玩,这里每种用法在特定的情况下,都有他相应的好处。不过,我是做为自己记录的,指不定什么时候就忘记了,还可以这么用。
    1. 可以使得头文件简单,而且出于实现保密的需要,还是很有用处的。
    2. 很多时候对象本身应该简洁,但往往应对不同的需要,通常需要数据对应。举个例子,比如玩家在哪个房间,在哪个房间最好不要直接记在玩家身上,用数据注入的方式,能够很快的获得该信息。
    3. 因为是做为库暴露头文件的,使用者并不关心void *的实际意义,而且能够加快编译速度。真正要关心时,就Graphics.h这个头文件是不够的,通常会需要了解整底层个实现,才能较好的扩充。
  • --清风雨
  • 13. re: void *几用
  • 还在玩C++语言,你这玩法, 又不是用在导弹导航上...
    别人看不懂的代码,都不是好代码,分数为0

    int sub(any) { any; return TRUE;}
    (void)sub(any);

  • --brent
  • 14. re: void *几用
  • 个人用3 的情况比较多
  • --oshj
  • 15. re: 简要记录sizeof和内存对齐
  • 很清楚,受教了
  • --rdeam

阅读排行榜

评论排行榜

多线程编程

    多线程编程是一件麻烦的事,记录一些想法。

    1.基于对象
    参考以前的一篇文章,别字较多。:}

    2.使用代理
    优选使用proxy进行线程间通信和数据共享。与主线程通信还可利用消息机制。

    3.数据获取
    3.1.const接口
    用const成员函数暗示该接口不会引起资源竞争。
    3.2.值语意
    数据的获取,采用值语意回传,而不返回指针或引用。

    4.操作请求
    4.1.资源锁
    提供基于资源的锁接口。
    class lockable
    {
    public:
        class locker
        {
        public:
            locker( lockable &res ) : m_lockable( res )
            {
                m_lockable.lock(); 
            }
            ~locker( void )
            {
                m_lockable.unlock();
            }
        private:
            lockable &m_lockable;
        }
        void lock( void );
        void unlock( void );
    private:
        ...
    };
    4.2.间接资源
    避免多实例访问同一资源,必要时采用资源锁。

    5.线程隐藏
    5.1.线程隐藏
    将线程做为后台服务,内部处理所有线程同步问题,对外隐藏线程。
    5.2.两套版本
    为了避免同步代价,针对是否多线程使用提供两套版本,但接口保持一致,可包装多线程安全版本于特定namespace。

    6.统一底层库
    6.1.C运行库选择保持一致
    6.2.包装底层运行库
    仅在特定的dll里采用特定的底层库,避免对外部影响。

    7.其它
    这里是另外一些值得注意的地方。
    7.1.API的线程安全
    API会多进程调用,多线程问题基本不用考虑。
    7.2._beginthread还是CreateThread
    优选_beginthread,除非确信不用C库函数。
    7.3.STL的多线程安全
    采用多线程设置编译。否则,即使每线程本地容器也可能会导致崩溃。
    7.4.static和singleton
    避免多线程间接访问static成员或变量;确保多线程启动前,请求单件实例化。

posted on 2006-03-07 09:56 终于有了间茅草棚 阅读(4321) 评论(2)  编辑 收藏

评论

# re: 多线程编程

好文章。

对于STL的安全性,如果多线程直接读写,会有安全问题吧。我一般都是写一个包装类,在里面做一下同步。
2006-03-07 10:09 | 小明

# re: 小明

1. 如果不间接访问同一资源没有问题。

2. 本来基于SGI的STL实现(MS版本的没有看过,因为我都用的STLport),内存适配器会访问同一资源,而出现问题。如果采用 多线程或多线程DLL 编译,STLport会根据_MT(这里指MS的VS系列,别的编译器也有相关项)进行保护。

3. 容器等是你的直接资源了,所以保护的责任就在自己了。
2006-03-08 22:28 | 清风雨
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]