小编Bre*_*ell的帖子

C++和Java进程之间的共享内存

我的目标是将数据从C++进程传递到Java进程,然后再返回结果.

我通过命名管道实现了这一点,但我更愿意共享数据而不是传递或复制它,假设访问速度更快.

最初,我想过在C++中创建一个可以用Java编写和读取的共享段,但我不确定这是否可以通过JNI实现,更不用说安全了.

我相信在Java中可以使用ByteBuffer.allocateDirect分配内存,然后使用GetDirectBufferAddress来访问C++中的地址,但是如果我是正确的,这是针对JNI中的本机调用,我无法在C++进程中获取此地址?

丢失.

提前谢谢了.

c++ java java-native-interface shared-memory

17
推荐指数
2
解决办法
1万
查看次数

IO完成端口初始读取和双向数据

我有以下简化的 IO 完成端口服务器 C++ 代码:

int main(..)
{
    startCompletionPortThreadProc();

    // Await client connection

    sockaddr_in clientAddress;
    int clientAddressSize = sizeof( clientAddress );
    SOCKET acceptSocket = WSAAccept( serverSocket, (SOCKADDR*)&clientAddress, &clientAddressSize, NULL, NULL);  

    // Connected

    CreateIoCompletionPort( (HANDLE)acceptSocket, completionPort, 0, 0 );

    // Issue initial read
    read( acceptSocket );
}


DWORD WINAPI completionPortThreadProc( LPVOID param )
{
    DWORD bytesTransferred = 0;
    ULONG_PTR completionKey = NULL;
    LPPER_IO_DATA perIoData = NULL;

    while( GetQueuedCompletionStatus( completionPort, &bytesTransferred, &completionKey, (LPOVERLAPPED*)&perIoData, INFINITE ) )
    {
        if( WaitForSingleObject( exitEvent, 0 ) …
Run Code Online (Sandbox Code Playgroud)

c++ iocp winsock2

5
推荐指数
1
解决办法
600
查看次数