Process 4: Timeouts

Overview

In this lecture, we discuss race conditions in process control.

Full lecture notesTextbook readings

Aside: Robustness and process control

Testing robustness

Techniques for robustness

Racer

racer-poll

Racer arguments

Polling and blocking

Signals

Signal system calls

void handle_signal(int signal_number) {
    // do something to handle the signal
}

...
struct sigaction sa;
sa.sa_handler = handle_signal; // or SIG_IGN or SIG_DFL
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
sigaction(SIGINT, &sa, nullptr);

When can a signal be delivered?

racer-block

racer-blockvar

Race conditions!

Statistics

racer-selfpipe

Reasoning about race conditions