83655


以下の`Task.sleep(nanoseconds:)`以下の`print("Finish")`が表示されない or エラーになってしまいます。

時間を`1_000`などにすると表示されます。

[code]

    Task {
        print("Start")
    
        do {
            try await Task.sleep(nanoseconds: 1_000_000_000)
        }
        catch {
            print("Error")
        }
    
        print("Finish")
    }
    
[/code]

[code]

    // output
    root@80270fb670dc:/usr/src# swift testSleep.swift
    Start
    root@80270fb670dc:/usr/src# 
    
[/code]

[code]

    Task {
        print("Start")
    
        do {
            try await Task.sleep(nanoseconds: 1000000)
        }
        catch {
            print("Error")
        }
    
        print("Finish")
    }
    
[/code]

[code]

    root@80270fb670dc:/usr/src# swift testSleep.swift
    Start
    Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
    Segmentation fault
    root@80270fb670dc:/usr/src# 
    
[/code]

  * Windows 10
  * Docker
  * Swift 
    * Swift version 5.5.1 (swift-5.5.1-RELEASE)
    * Target: x86_64-unknown-linux-gnu


CC BY-SA 4.0
2021-11-15T09:07:18.987
83642
2021-11-22T02:41:29.720
2021-11-15T10:51:50.717
40856
40856
question
swift
await Task.sleep(nanoseconds:)をDockerで実行した際に、sleepする時間が長すぎると処理が実行されない


## 解決方法1

`RunLoop.main.run()`を最後の行に追加して、`exit(0)`をTask{}の最後に追加する。

## 解決方法2

コンパイルして、実行

[code]

    swiftc taskSleep.swift
    ./taskSleep.
    
[/code]

問題点: コンパイルしなきゃいけない

## 解決法3

`_runAsyncMain {}`内で実行する

[code]

    _runAsyncMain {
    }
    
[/code]


CC BY-SA 4.0
2021-11-16T09:03:35.003
83655
2021-11-22T02:41:29.720
2021-11-22T02:41:29.720
40856
40856
83642
answer