[swift-server-dev] Dispatch + Blocking Calls

Darren Mo darren.mo at me.com
Mon Oct 31 03:21:17 CDT 2016

Something to keep in mind… once SR-2905 <https://bugs.swift.org/browse/SR-2905> is resolved, it will be feasible to write Linux server applications in a synchronous manner.

How does this work? Dispatch work items are scheduled onto a pool of kernel threads. If a work item makes a blocking system call, the kernel thread will be blocked. Ideally, the work item scheduler will start a new kernel thread to take the place of the blocked thread. This is only possible if the scheduler can be triggered at the moment the blocking system call is made. A Linux kernel module is required for this to work in Swift.

This ideal threading model is the main selling point of Go. Go developers can write their code in a synchronous manner without any performance tradeoff. (You might be wondering why Go does not need a kernel module. The reason is all the system calls go through the Go runtime before reaching the kernel.)

Personally, I am very excited for the day that this kernel module is released. Swift will truly be the best programming language in nearly every regard.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-server-dev/attachments/20161031/19891e27/attachment.html>

More information about the swift-server-dev mailing list