在C语言中,我有多个线程生成
从一般层面上讲,应该遵循以下几点:
动机和解释:
我正在编写处理在堆对象中保留的全局引用作为标签的JNI代码。
当发生
可能会有许多线程接收
long
值,并且一个线程消费它们。因此,我需要一个固定大小的缓冲区,以类似于维基百科实现的方式实现,并且以线程安全的方式访问它的方法。从一般层面上讲,应该遵循以下几点:
- 当向满缓冲区添加内容时,线程应被阻塞(不要覆盖旧值)。
- 消费者线程应该被阻塞,直到缓冲区已满-它的工作成本很高,应尽可能多地完成工作。(这是否需要双缓冲解决方案?)
动机和解释:
我正在编写处理在堆对象中保留的全局引用作为标签的JNI代码。
当发生
ObjectFree
JVMTI事件时,我会获得一个代表需要使用DeleteGlobalRef
释放的全局引用的long
标记。为此,我需要一个JNIEnv
引用 - 而获取它是非常昂贵的,因此我想要缓冲请求并尽可能多地删除它们。可能会有许多线程接收
ObjectFree
事件,并且将有一个线程(我的)执行引用删除。