January 2019
Intermediate to advanced
512 pages
14h 5m
English
Let's suppose that, in our program, we want to have a class for logging all debug, information, and error messages. The message logger will ensure that, even if multiple threads or processes print messages at the same time, the messages are printed in order, not garbled or interleaved. We also maintain a count of errors and warnings of different types, and some messages we want to store so they can be reported later, perhaps as a summary of all errors at the end of the run. There is only one set of message counts for the entire program, and, to ensure synchronization across multiple threads, one lock that must be used for printing all messages.
While there are other ways to solve this problem, the most straightforward ...