Возможно, стоит пояснить разницу между синхронизацией из thread/process-safe и синхронизацией с помощью Lock🤔
Наша задача — заставить разные процессы и потоки обращаться к базе данных (или любым другим ресурсам) последовательно. Чтобы не случилось так называемого race condition, то есть состояние гонки. Это когда разные потоки или процессы пытаются одновременно что-то сделать с одним и тем же ресурсом.
В этом случае нам нужна какая-то логика ограничения. Пока один процесс не завершил своё действие, другие не могут получить доступ к ресурсу.
Так вот, thread-safe и process-safe означает что отдельно взятые операции записи в БД гарантированно будут последовательны. Запросы из разных процессов или потоков выстроятся в очередь и не будут мешать друг другу. Лучше всего когда этот блок реализован на уровне БД в виде атомарных операций или ещё как-то.
Но зачем нам тогда еще дополнительный Lock?
Этот способ синхронизации используется когда процесс никак не укладывается в одно действие и должен сделать множество операций прежде чем дать доступ следующему. В этом случае процесс ставит некий глобальный Lock на ресурс и никто другой, даже получив законное право на доступ, не может ничего сделать. Все ждут пока этот Lock не будет снят.
Это решается на уровне приложения и правильность реализации полностью в вашей ответственности. Например, если забыли разблокировать или сделали перекрёстный Lock (Deadlock как на картинке), то всё зависнет в бесконечном ожидании.
#basic
Project Infinity X - Official | A14| Nothing Phone 2 (Pong)
📝 Details:
- Version: v1.6
- Device: #Pong
- Released: 25/10/24
⬇️ Download: Here
📖 Changelogs: Device | Source
📔 Instructions: Here
🎄 Device tree : Here
🖼 Screenshot : Here | Here
🆘 Support: Device
🏷 Tags: #AOSP#ROM#InfinityX#U#QPR3#Official
✍️ Note:
• Read changelogs
• OTA available
• Base firmware 2.6.0 is recommended
• Dirty flash possible from previous build
• Based on Qpr3 September Security Patch
• Dolby Atmos available
• Flash meteoric kernel for KSU support
• Nik gapps recommend for vanilla version
🏆 Credits:
- Chandu Dyavanapelli for DT Base
- Hellboy for kernel tree
- Fabian and Hellboy for Glyph Implementation
👤 Maintainer: @Ghosutox
🔔 Updates: @NothingPhone2Updates
🐙 Chat: @NothingPhone2
Project Infinity X - Official | A14| Nothing Phone 2 (Pong)
📝 Details:
- Version: v1.5
- Device: #Pong
- Released: 11/09/24
⬇️ Download: Here
📖 Changelogs: Device | Source
📔 Instructions: Here
🎄 Device tree : Here
🖼 Screenshot : Here | Here
🆘 Support: Device
🏷 Tags: #AOSP#ROM#InfinityX#U#QPR3#Official
✍️ Note:
• Read changelogs
• Base firmware 2.6.0 is recommended
• Dirty flash possible from previous build
• Based on Qpr3 September Security Patch
• Dolby Atmos available
• Flash meteoric kernel for KSU support
• Nik gapps recommend for vanilla version
🏆 Credits:
- Chandu Dyavanapelli for kernel & DT Base
- Fabian and Hellboy for Glyph Implementation
👤 Maintainer: @Ghosutox
🔔 Updates: @NothingPhone2Updates
🐙 Chat: @NothingPhone2
Project Infinity X - Official | A14| Nothing Phone 2 (Pong)
📝 Details:
- Version: v1.4
- Device: #Pong
- Released: 27/08/24
⬇️ Download: Here
📔 Instructions: Here
🎄 Device tree : Here
🖼 Screenshot : Here | Here
🆘 Support: Device
🏷 Tags: #AOSP#ROM#InfinityX#U#QPR3#Official
✍️ Note:
• Initial official release
• Base firmware 2.6.0 is recommended
• Clean flash mandatory
• Based on Qpr3 August Security Patch
• Dolby Atmos available
• Flash meteoric kernel for KSU support
• Nik gapps recommend for vanilla version
🏆 Credits:
- Chandu Dyavanapelli for kernel & DT Base
- Fabian and Hellboy for Glyph Implementation
👤 Maintainer: @Ghosutox
🔔 Updates: @NothingPhone2Updates
🐙 Chat: @NothingPhone2