github.com/sheffler/gcd4

demo - Swift calling dispatch queue



Documentation

This little demo shows Swift calling dispatch_after with a block that prints a line after a delay. The dispatch queue library is wrapped in a Swift module.

[This issue tracked at https://bugs.swift.org/browse/SR-397]

When I try this

swift build

I get the following error message.

Compiling Swift Module 'gcd4' (1 sources)
/home/sheffler/swift/gcd4/Sources/main.swift:42:1: error: module 'CDispatch' has no member named 'dispatch_after'
CDispatch.dispatch_after(time, queue, {
^~~~~~~~~ ~~~~~~~~~~~~~~
<unknown>:0: error: build had 1 command failures
swift-build: exit(1): ["/home/sheffler/src/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin/swift-build-tool", "-f", "/home/sheffler/swift/gcd4/.build/debug/gcd4.o/llbuild.yaml"]

The function dispatch_after is not included, because the blocks feature is not enabled while the module is processed.

If I manually construct the swiftc compile command, I can create an executable.

swiftc -v -o gcd4 Sources/main.swift -I .build/debug -j8 -Onone -g -Xcc -fblocks -Xcc -F-module-map=Packages/CDispatch-1.0.0/module.modulemap -I Packages/CDispatch-1.0.0 -I /usr/local/include

and run it.

./gcd4
Hello World!
someInts is of type [Int] with 0 items.
someInts is [1, 2, 3] with 3 items.
Now:0
Time:2811311522557
Main:0x00000000009e1570
Delayed!