2012-08-29 45 views
2

有沒有任何C guru曾經在C中實現過一個Epoll非阻塞選擇器,我可以從Java調用,所以我不必使用Java的NIO Epoll實現?EPoll C可以通過JNI從Java調用的實現

+0

什麼毛病之一NIO?如果你描述你的問題,也許這個社區可以幫助你更好地解決它。 –

+0

@JoachimPileborg我希望可以對本機C實現進行微調,以獲得比Sun實現的更好的延遲。 – JohnPristine

回答

0

如果Java 2.6中的SelectorProvider運行在內核爲2.6或更高版本的Linux上,它將使用epoll。

0

是,Java支持epoll在JVM的源代碼,你可以找到如下代碼

JNIEXPORT jint JNICALL 
Java_sun_nio_ch_EPoll_epollCreate(JNIEnv *env, jclass c) { 
/* 
* epoll_create expects a size as a hint to the kernel about how to 
* dimension internal structures. We can't predict the size in advance. 
*/ 
int epfd = epoll_create(256); 
if (epfd < 0) { 
    JNU_ThrowIOExceptionWithLastError(env, "epoll_create failed"); 
} 
return epfd; 
}