我知道序列化對象以及它們如何保存到磁盤,但線程序列化實際上意味着什麼?請問任何人可以幫我解決這個問題,並指出我的方向是正確的嗎?C++中的線程序列化是什麼意思?
回答
你是對的,這些是serialization
的兩個不同含義。您熟悉data serialization,它將數據結構轉換爲某些規範表示形式的字節流。在多線程中,術語序列化意味着mutual exclusion對於thread or process synchronization,這意味着一次只有一個線程可以在數據結構上操作。 C++ 11使用std::mutex
#include <mutex>
std::mutex file_io_mutex;
{
std::lock_guard<std::mutex> guard(file_io_mutex);
std::out << "Only one thread at a time will execute this line." << std::endl;
}
這是其中資源被獲取並在同一時間進行初始化,並且當釋放時它超出範圍的Resource Acquisition Is Initialization (RAII)一個例子(執行到達附近提供了用於線程之間的序列化大括號)。這是一個常見的習慣用法,它確保即使代碼在達到塊末尾之前拋出異常,也會釋放互斥鎖。
Serialize實際上意味着以連續的形式發佈,如同一個接一個。因此,線程序列化意味着確保一系列事件發生的順序不是同時發生的
因此,具有序列化線程訪問權限的堆意味着對堆的調用將按照它們的生成順序發生並且實際上不會同時發生。這可能是通過全局鎖定來完成的。
這個。許多編譯器/ CPU通過對指令進行重新排序來優化代碼,以防止延遲,並且L1高速緩存通常是線程/內核特定的。多線程對內存的串行化訪問通常意味着在特定場景中放棄這些優化,其中線程訪問內存的順序對於保持數據完整性至關重要。 –
不知道你被告知的具體上下文,我猜它是指開發一個單線程應用程序,通過使用消息隊列模擬多線程系統。
這讓我回到過去的日子,當時我玩了CircleMUD派生物。整場比賽是在單線程中實現的,但它必須同時處理50-100個玩家。我很驚訝他們是如何做到的。
- 1. 線程是什麼意思?
- 2. 什麼是可序列化?這是什麼意思?
- 3. C中##是什麼意思?
- 4. c中的交織「多線程」是什麼意思?
- 5. 線程安全是什麼意思?
- 6. 守護線程是什麼意思?
- 7. 「線程轉儲」是什麼意思
- 8. 線程安全是什麼意思?
- 9. 是什麼意思:是什麼意思?
- 10. 什麼?在C#中是什麼意思?
- 11. **是什麼意思,C?
- 12. %* c是什麼意思?
- 13. 這是什麼意思? [c#]
- 14. 這是什麼意思-c
- 15. 這是什麼意思 - C#
- 16. cmd/C是什麼意思?
- 17. 在c/C++中,^ =是什麼意思?
- 18. Storm Nimbus序列號是什麼意思?
- 19. ANSI這個序列是什麼意思?
- 20. 「TypeError:(1,2,3)不是JSON序列化」是什麼意思?
- 21. 什麼意思是「線框」在css中
- 22. C#中的=]是什麼意思?
- 23. c。宏中的`.`和`*`是什麼意思?
- 24. Objective-C中的「&error」是什麼意思?
- 25. 目標C中的^是什麼意思?
- 26. '「」''在C#中的「」+ ex'是什麼意思?
- 27. C++中的* const * a是什麼意思
- 28. C宏中的#x是什麼意思?
- 29. 什麼是(int)在c#中的意思?
- 30. 什麼是connection.Dispose()在C#中的意思?
哇!這可以清楚地回答我的問題。你是偉大的朋友 – pokche
很高興你發現它有幫助! – amdn