แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒฆแƒแƒช แƒ”แƒขแƒแƒžแƒ–แƒ” แƒงแƒ•แƒ”แƒšแƒแƒœแƒ˜ แƒ•แƒ”แƒฏแƒแƒฎแƒ”แƒ‘แƒ˜แƒ— Race condition แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒ“แƒ แƒ แƒแƒชแƒ แƒฏแƒ”แƒ  แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ˜แƒก, แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ’แƒ˜แƒŸแƒ” แƒ’แƒ•แƒ’แƒแƒœแƒ˜แƒ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ แƒ“แƒ แƒ•แƒ”แƒ แƒแƒคแƒ แƒ˜แƒ— แƒ•แƒ”แƒ  แƒ•แƒฎแƒ•แƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ—แƒฃ แƒ แƒแƒขแƒแƒ› แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ. โ€ฆ

Swift โ€Šโ€”โ€Š Race condition แƒ”แƒ‘แƒ˜, Lock แƒ”แƒ‘แƒ˜ แƒ“แƒ Thread safety
Swift โ€Šโ€”โ€Š Race condition แƒ”แƒ‘แƒ˜, Lock แƒ”แƒ‘แƒ˜ แƒ“แƒ Thread safety

แƒแƒ“แƒ”แƒกแƒ›แƒ” แƒ’แƒ˜แƒคแƒ˜แƒฅแƒ แƒ˜แƒ แƒ—แƒฃ แƒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒ•แƒ”แƒซแƒแƒฎแƒ˜แƒ—? แƒแƒ แƒแƒ“แƒ แƒ แƒแƒ’แƒแƒ แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒฉแƒแƒœแƒก แƒฎแƒ? แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒ”แƒซแƒแƒฎแƒ˜แƒ— แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฏแƒแƒ“แƒแƒกแƒœแƒฃแƒ แƒ˜ แƒ—แƒแƒ•แƒ˜แƒกแƒ˜แƒ— แƒฎแƒ“แƒ”แƒ‘แƒ runtime แƒจแƒ˜. แƒแƒ แƒแƒ“แƒ แƒ แƒแƒ› แƒ“แƒแƒ•แƒคแƒ˜แƒฅแƒ แƒ“แƒ”แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒกแƒฃแƒ แƒแƒ‘แƒแƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ˜แƒก แƒฃแƒ™แƒแƒœ. แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒ›แƒ”แƒ›แƒ™แƒ•แƒ˜แƒ“แƒ แƒ”แƒแƒ‘แƒ˜แƒ—แƒแƒ‘แƒ, แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ, แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ, แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒ.แƒจ แƒ“แƒฆแƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ— แƒ—แƒฃ แƒ แƒ แƒขแƒ˜แƒžแƒ˜แƒก methodโ€ฆ

Swift - แƒ แƒ แƒแƒ แƒ˜แƒก Method dispatch แƒ˜? แƒ แƒ แƒขแƒ˜แƒžแƒ˜แƒก dispatch แƒ”แƒ‘แƒ˜ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜.
Swift - แƒ แƒ แƒแƒ แƒ˜แƒก Method dispatch แƒ˜? แƒ แƒ แƒขแƒ˜แƒžแƒ˜แƒก dispatch แƒ”แƒ‘แƒ˜ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜.

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ”แƒกแƒ”แƒ—แƒ˜ แƒ›แƒชแƒœแƒ”แƒ‘แƒ, infinite-regress, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒก แƒฃแƒกแƒแƒกแƒ แƒฃแƒšแƒ entity แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ˜แƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒแƒœ แƒ แƒ”แƒ™แƒฃแƒ แƒกแƒ˜แƒฃแƒšแƒ˜ แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜แƒ— แƒกแƒแƒ“แƒแƒช แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ แƒ”แƒ™แƒฃแƒ แƒกแƒ˜แƒ แƒแƒกแƒแƒฎแƒแƒ•แƒก แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ แƒแƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ entity แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒœ แƒฌแƒแƒ แƒ›แƒแƒฅแƒ›แƒœแƒ˜แƒšแƒ˜, แƒ›แƒ˜แƒกแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ›แƒฅแƒ›แƒœแƒ”แƒšแƒ˜แƒกแƒแƒ“แƒ›แƒ˜. WTF ?

Swift โ€”แƒ แƒ แƒแƒ แƒ˜แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Closure-แƒ˜ แƒคแƒแƒ แƒ“แƒ˜แƒก แƒฃแƒ™แƒแƒœ.
Swift โ€”แƒ แƒ แƒแƒ แƒ˜แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Closure-แƒ˜ แƒคแƒแƒ แƒ“แƒ˜แƒก แƒฃแƒ™แƒแƒœ.

แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“, แƒ แƒแƒ› แƒฉแƒ”แƒ›แƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ“แƒฆแƒ˜แƒฃแƒ แƒ˜ Software Engineer แƒ˜แƒก แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒ iOS แƒกแƒแƒ›แƒงแƒแƒ แƒแƒจแƒ˜ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก, แƒแƒ“แƒ˜แƒ—แƒ’แƒแƒœแƒ•แƒ” แƒ›แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ“แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒฃแƒ แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒฎแƒแƒšแƒ แƒ‘แƒแƒšแƒ แƒ—แƒ•แƒ”แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒฉแƒ”แƒ›แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒก แƒแƒ แƒกแƒ”แƒ‘แƒ˜แƒ—แƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒแƒฅแƒ•แƒ— low-level แƒ—แƒแƒœ แƒ“แƒ แƒคแƒฃแƒœแƒ“แƒแƒ›แƒ”แƒœแƒขแƒแƒšแƒฃแƒ  แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ—แƒแƒœ, แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒช แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ, แƒ’แƒแƒชแƒœแƒแƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. โ€ฆ

Get back to the basicsโ€Šโ€”โ€ŠProcess แƒ”แƒ‘แƒ˜, CPU Virtualization, IPC แƒ“แƒ Thread แƒ”แƒ‘แƒ˜ A.K.A แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜
Get back to the basicsโ€Šโ€”โ€ŠProcess แƒ”แƒ‘แƒ˜, CPU Virtualization, IPC แƒ“แƒ Thread แƒ”แƒ‘แƒ˜ A.K.A แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜

แƒแƒ“แƒ˜แƒ—แƒ’แƒแƒœแƒ•แƒ”, แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ(Memory management) แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒ›แƒ”แƒชแƒœแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ˜แƒงแƒ แƒ“แƒ แƒ–แƒ”แƒ›แƒแƒ— แƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜แƒก แƒžแƒ แƒ˜แƒแƒ แƒ˜แƒขแƒ”แƒขแƒฃแƒšแƒแƒ‘แƒ แƒแƒ แƒช แƒ”แƒฎแƒšแƒ แƒแƒ  แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒšแƒ. แƒ แƒแƒฆแƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ”แƒ แƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒ แƒแƒ—แƒ แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ›แƒฃแƒ“แƒแƒ› แƒ˜แƒชแƒšแƒ”แƒ‘แƒแƒ“แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ“แƒ แƒ แƒ˜แƒชแƒฎแƒแƒ•แƒœแƒแƒ‘แƒ. แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ”แƒ‘แƒ˜ แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒคแƒ”แƒ แƒแƒจแƒ˜, แƒ—แƒแƒ•แƒ˜แƒแƒœแƒ—แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒงแƒแƒ•แƒ”แƒš bitโ€™แƒก แƒฃแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ“แƒ”แƒ‘แƒแƒ“แƒœแƒ”แƒœ. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฃแƒ™แƒ•แƒ” kilobyte แƒ”แƒ‘แƒก แƒ“แƒ megabyteโ€ฆ

แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒกย .NET แƒ˜แƒก Garbage Collectorโ€Šโ€”โ€Šแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1โ€Šโ€”โ€ŠBasic concepts)
แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒกย .NET แƒ˜แƒก Garbage Collectorโ€Šโ€”โ€Šแƒ˜ (แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 1โ€Šโ€”โ€ŠBasic concepts)

แƒ แƒแƒก แƒ•แƒ˜แƒกแƒฃแƒ แƒ•แƒ”แƒ‘แƒ“แƒ˜, แƒ แƒแƒ› แƒ›แƒชแƒแƒ“แƒœแƒแƒ“แƒ แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒ›แƒ”แƒชแƒœแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก/แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒฌแƒแƒ•แƒšแƒแƒ›แƒ“แƒ”. แƒ แƒ แƒ•แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ” 2 แƒฌแƒšแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒกแƒแƒฆแƒแƒ›แƒแƒแƒ‘แƒ˜แƒ— แƒšแƒ”แƒฅแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ แƒ’แƒจแƒ˜ แƒงแƒแƒคแƒœแƒ˜แƒก แƒ“แƒ แƒแƒก. แƒฉแƒ”แƒ›แƒ˜ แƒแƒ–แƒ แƒ˜แƒ— แƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒก แƒ˜แƒก แƒ แƒแƒช แƒ˜แƒชแƒ˜, แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒ แƒกแƒแƒฅแƒ›แƒ”, แƒกแƒแƒฅแƒ›แƒ”แƒ—แƒ แƒจแƒแƒ แƒ˜แƒก. แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒชแƒแƒขแƒ แƒกแƒฎแƒ•แƒแƒœแƒแƒ˜แƒ แƒ˜ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒแƒ แƒกแƒแƒญแƒ˜แƒ แƒ. โ€ฆ

แƒ แƒแƒก แƒ•แƒ˜แƒกแƒฃแƒ แƒ•แƒ”แƒ‘แƒ“แƒ˜, แƒ แƒแƒ› แƒ›แƒชแƒแƒ“แƒœแƒแƒ“แƒ แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒ›แƒ”แƒชแƒœแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก/แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒฌแƒแƒ•แƒšแƒแƒ›แƒ“แƒ”.
แƒ แƒแƒก แƒ•แƒ˜แƒกแƒฃแƒ แƒ•แƒ”แƒ‘แƒ“แƒ˜, แƒ แƒแƒ› แƒ›แƒชแƒแƒ“แƒœแƒแƒ“แƒ แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒ›แƒ”แƒชแƒœแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก/แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒฌแƒแƒ•แƒšแƒแƒ›แƒ“แƒ”.
Tornike Gomareli

Specialising in iOS and System Programming. Always trying to learn how to think better. twitter / @tornikegomareli