Exercise 3.46. Suppose that we implement test-and-set! using an ordinary procedure as shown in the text, without attempting to make the operation atomic. Draw a timing diagram like the one in figure 3.29 to demonstrate how the mutex implementation can fail by allowing two processes to acquire the mutex at the same time. ———————————————————————————————————————————————————————————————————————— At the start, the contents of the cell are false. Process 1: Process 2: test (if (car cell)) test (if (car cell)) both see the false value and take the second branch... (set-car! cell true) (set-car! cell true) both set the cell contents to true, but it is too late, and both callers of test-and-set! will now run concurrently.