又说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)

发表评论

2009年11月

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          

关于此日记

此日记由 Cnangel 发表于 2009年6月 3日 01:29

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

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

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

归档

Powered by Movable Type 4.31-zh-cn