bylevel / goscws

scws中文分词的go语言绑定
MIT License
11 stars 1 forks source link

内存泄露 #1

Open weberhong opened 10 years ago

weberhong commented 10 years ago

func (s *Scws) Free() 应该增加对s.res的释放吧? C.scws_free_result(s.res)

另外,我看了一下scws的c源码 scws_fork/scws_free因为其对xdict/rule的管理是不加锁直接操作引用计数,因此在多线程下是不安全的,所以只能在最初初始化的时候在单线程环境下为每个线程fork一个备用

到了go中后,就不能动态启动一个goroutine,动态调用Scws.Fork()得到一个新的scws进行切词,用起来真是不方便,不知道你在实际用的地方是怎么处理这种问题的?

bylevel commented 10 years ago

哦,当初想用来着,后来因为在go里面整xapian实在不方便,就没在go里面使用了。唯一一个用到的是在python里面跟xapian结合。这货还是c跟c++用着实在啊。新鲜的蟑螂  原始邮件  发件人: getwenotifications@github.com收件人: bylevel/goscwsgoscws@noreply.github.com发送时间: 2014年2月17日(周一) 17:56主题: [goscws] 内存泄露 (#1)func (s *Scws) Free() 应该增加对s.res的释放吧? C.scws_free_result(s.res)

另外,我看了一下scws的c源码 scws_fork/scws_free因为其对xdict/rule的管理是不加锁直接操作引用计数,因此在多线程下是不安全的,所以只能在最初初始化的时候在单线程环境下为每个线程fork一个备用

到了go中后,就不能动态启动一个goroutine,动态调用Scws.Fork()得到一个新的scws进行切词,用起来真是不方便,不知道你在实际用的地方是怎么处理这种问题的?

—Reply to this email directly or view it on GitHub.