異なる言語のコラボレーションの例

1499 ワード

プロセスとスレッド、コヒーレンスの違いasync関数の意味と使い方上の2つの文章では、プロセス、スレッド、コヒーレンス、javascriptにおけるコヒーレンスの簡単な使い方を紹介します.最近では,python,kotlin,javascript,goにそれぞれ言語を用いて開発され,コラボレーションが用いられている.例を別の言語に分けて書くつもりです.
javascript
const Coroutine = () => {
    return (
        
); } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } const click_button = async() => { console.log('Taking a break...'); await sleep(2000); console.log('Two second later'); }

以上のように、async awaitで実装されたjavascriptを用いたsleepの簡単な方法である.
python
async def compute(x, y):
    print("Compute %s + %s ..." % (x, y))
    await asyncio.sleep(1.0)
    return x + y

async def print_sum(x, y):
    result = await compute(x, y)
    print("%s + %s = %s" % (x, y, result))
    return result

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    result = loop.run_until_complete(print_sum(1, 2))
    loop.close()
    print(result)

kotlin:
一時停止関数:
suspend fun mySuspendingFun(x: Int) : Result {
 …
}
async {
 val res = mySuspendingFun(20)
 print(res)
}

Androidのanko実装ライブラリ:
async(UI) {
 val r1 = bg { fetchResult1() }
 val r2 = bg { fetchResult2() }
 updateUI(r1.await(), r2.await())
}