This chapter explained the threading abstractions provided by Ice: mutexes, monitors, and threads. Using these APIs allows to make your code thread safe and to create threads of your own without having to use non-portable APIs that differ in syntax or semantics across different platforms: Ice not only provides a portable API but also guarantees that the semantics of the various functions are the same across different platforms. This makes it easier to create thread-safe applications and allows you to move your code between platforms with simple recompilation.