Let's summarize the concepts we discussed in this chapter.
We learned about the perils of spawning threads and the resulting race condition.
We learned how to use the queue data structure to program a multithreaded application, without having to worry about synchronization between multiple threads trying to access the same memory, and without using complicated synchronization primitives.
The Weather Reporter application introduced us to the basics of network programming and how to tap into the internet to get data. We discussed two popular structures used for data exchange, namely XML and JSON.
The port scanner and the chat program discussed the basics of socket programming for interprocess and remote communication. We used the TCP/IP ...