又说iconv

在多线程环境中,iconv本身是不支持多线程安全的。
比如在代码段中:

iconv_t cd = iconv_open(tocode, fromcode);
if (cd == (iconv_t)-1) {
exit(1);
}
iconv(cd, &inbuf, &len, &outbuf, &buflen);
iconv_close(cd);
多线程环境中,iconv_open不断打开资源,虽然iconv_close能够释放,但是并不能立即释放资源,这样造成内存泄漏。

比较正确的方法是静态地初始化iconv_open和析构iconv_close,或对上面代码段进行锁机制可实现线程安全。

Categories

| | 评论(0)

发表评论

May 2010

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

关于此日记

此日记由 Cnangel 发表于 June 3, 2009 1:29 AM

此Blog上的上一篇日记Yum使用

此Blog上的下一篇日记CPAN对Perl模块进行编译

首页归档页可以看到最新的日记和所有日记。

归档

Powered by Movable Type 5.02