memset memcpy 中断中可以用吗

2019-07-20 21:52发布

外部函数也用,是否会有函数重入问题 ,因为这些函数源码也看不到,有点担心
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
lvehe
1楼-- · 2019-07-21 01:15
百度了一下,说是可重入的,所以应该不用担心
zmingwang
2楼-- · 2019-07-21 04:24
这两个函数本身是可重入的,但是如果是在不同的线程中使用同一个缓冲区进行memset或memcpy,就有可能会破坏数据,这是资源互斥的问题.
zmingwang
3楼-- · 2019-07-21 09:35
[mw_shl_code=c,true]void * __cdecl memset (
        void *dst,
        int val,
        size_t count
        )
{
        void *start = dst;

#if defined (_M_IA64) || defined (_M_AMD64)

        {


        __declspec(dllimport)


        void RtlFillMemory( void *, size_t count, char );

        RtlFillMemory( dst, count, (char)val );

        }

#else  /* defined (_M_IA64) || defined (_M_AMD64) */
        while (count--) {
                *(char *)dst = (char)val;
                dst = (char *)dst + 1;
        }
#endif  /* defined (_M_IA64) || defined (_M_AMD64) */

        return(start);
}
[/mw_shl_code]
zmingwang
4楼-- · 2019-07-21 10:54
 精彩回答 2  元偷偷看……
zmingwang
5楼-- · 2019-07-21 15:50
 精彩回答 2  元偷偷看……

一周热门 更多>