项目.多进程SVG

Posted DrMess

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目.多进程SVG相关的知识,希望对你有一定的参考价值。

遇到的问题:

1、CreateWindowEx(...)返回0,但是 GetLastError() 返回也是0...

  ZC:网上查了,说是 WN_CREATE消息没有正确的返回,会导致这个现象。我这里的情况是:在窗体创建过程中,调用了NULL指针的函数,于是 导致 创建过程报错了(但是 没有使用__try{}__except(...){},程序一点反应都没有,报错信息都没有...)

2、vc2010多线程使用std标准模板库容器DEBUG版迭代器BUG - CSDN博客.htmlhttps://blog.csdn.net/lazyclough/article/details/7547610

在vc2010多线程环境下使用std标准模板库容器 list 时, 如果是DEBUG版本, 迭代器存在BUG

在<list>文件中,以下代码块会出现非法访问错,实际上是在子线程中调用list的begin()方法返回迭代器时更改了  _Pnext 所指内存块的值。
#if _ITERATOR_DEBUG_LEVEL == 2
    void _Orphan_ptr(_Myt& _Cont, _Nodeptr _Ptr) const
        {    // orphan iterators with specified node pointers
        _Lockit _Lock(_LOCK_DEBUG);
        const_iterator **_Pnext = (const_iterator **)_Cont._Getpfirst();
        if (_Pnext != 0)
            while (*_Pnext != 0)
                if ((*_Pnext)->_Ptr == this->_Myhead
                    || _Ptr != 0 && (*_Pnext)->_Ptr != _Ptr)
                    _Pnext = (const_iterator **)(*_Pnext)->_Getpnext();
                else
                    {    // orphan the iterator
                    (*_Pnext)->_Clrcont();
                    *_Pnext = *(const_iterator **)(*_Pnext)->_Getpnext();
                    }
        }
 #endif /* _ITERATOR_DEBUG_LEVEL == 2 */



解决办法,跟踪_ITERATOR_DEBUG_LEVEL 宏定义,打开yvals.h文件,将157行的

#define _HAS_ITERATOR_DEBUGGING 1 改为 #define _HAS_ITERATOR_DEBUGGING 0

  ZC:我跟踪下来,我出错的地方是这里:

      

      

      我跟了一下,貌似 正常的情况是:*_Pnext 是 == 0的,而出错的情况是 (*_Pnext != 0) 。

      我根据帖子的内容,也修改了 原来的源文件,前提是 事先做了备份(C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\include\\yvals - 副本.h),把原来的源文件 也改成了 非只读的状态...

    思考:我的情况里面 没有用到多线程啊,为什么也做这样?

3、

4、

5、

 

以上是关于项目.多进程SVG的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

代码片段:Shell脚本实现重复执行和多进程

前端开发常用代码片段(中篇)

线程学习知识点总结

多线程编程

多线程编程