13

I'm learning to use epoll function. But my OS X, Mountain Lion doesn't have a header file, sys/epoll.h.

I'd like to use epoll function on OS X. How Can I use epoll function?

cmeerw
  • 7,176
  • 33
  • 27
inherithandle
  • 2,614
  • 4
  • 31
  • 53

2 Answers2

26

Mac OS X doesn't support epoll, but it does support kqueue which is very similar.

merlin2011
  • 71,677
  • 44
  • 195
  • 329
cmeerw
  • 7,176
  • 33
  • 27
  • 1
    updated link https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kqueue.2.html – nikoo28 Apr 07 '20 at 21:36
0

on Mac OSX use kqueue instead of epoll. Do something like this in your java code.

 final boolean isMac = 

  System.getProperty("os.name").toLowerCase(Locale.US).contains("mac");

    // Configure the server.
    // See https://netty.io/wiki/native-transports.html
    EventLoopGroup bossGroup;
    EventLoopGroup workerGroup;

    if (isMac) {
        bossGroup = new io.netty.channel.kqueue.KQueueEventLoopGroup();
        workerGroup = new io.netty.channel.kqueue.KQueueEventLoopGroup(5);
    } else {
        bossGroup =  new io.netty.channel.epoll.EpollEventLoopGroup();
        workerGroup = new io.netty.channel.epoll.EpollEventLoopGroup(5);
    }

Ensure that you have added io.netty on pom.xml

kham Ham
  • 5
  • 1