【发布时间】:2013-01-31 09:19:30
【问题描述】:
我一直在玩 glib,它
- 利用引用计数来管理其对象的内存;
- 支持多线程。
我无法理解的是他们如何一起玩。 即:
- 在
glib中,每个线程似乎都不会增加在其输入上传递的对象的引用计数,AFAIK(我将它们称为线程共享对象)。这是真的吗? (或者我只是没能找到正确的代码?)除了主线程(负责对它们进行引用计数)之外,不增加共享它们的每个线程的线程共享对象的引用计数是一种常见的做法吗? - 不过,每个线程都会增加对象的引用计数,这些对象是由自身动态创建的。为了防止名称冲突和内存泄漏,程序员是否应该不在每个线程中给出相同的变量名称? (例如,在我的图片上,thread2 不应该创建一个名为 output_object 的堆变量,否则它将与 thread1 的同名堆变量发生冲突)?
更新:对(问题 2)的回答是否定的,导致 这些变量不相交: Is dynamically allocated memory (heap), local to a function or can all functions in a thread have access to it even without passing pointer as an argument.
我的问题的说明:
【问题讨论】:
标签: multithreading gtk pthreads glib reference-counting