如何解决在 JNI 环境中 pthread_cond_broadcast() 和 pthread_cond_timedwait() 的等效函数是什么?
阅读this后,我现在了解如何在 JNI 的本机端同步线程的临界区。
但是,我找不到这两个 pthread 调用的等效函数: pthread_cond_timedwait() 和 pthread_cond_broadcast()
我有一个长时间运行的响应处理线程,它以 Java 启动,然后下降到 C 中以接收网络数据,然后将数据排入全局共享响应队列。
同时,我有多个请求线程,它们以 Java 启动,然后下降到 C,向服务器发出网络请求,然后等待响应出现在全局共享响应队列中。
长时间运行的响应线程中的相关代码是:
/* after enqueuing a network response to the global shared Q */
/* wake up all of the request threads waiting for a response */
pthread_cond_broadcast(&q_entry_cv);
以及请求线程中的相关代码:
if(q_entries == 0)
pthread_cond_timedwait(&q_entry_cv,&qlock,&ts);
/* wake up when the response thread has q'd a new response & search the q*/
是否有针对这些 POSIX 调用的等效 JNI 调用?
解决方法
您似乎在谈论 wait(long,int) 和 notifyAll() 方法。
Java 中的每个对象都有这些方法。
here 描述了如何从 JNI 调用实例方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。