https://youtu.be/6yiuwadJtWc?list=PLZ9NgFYEMxp4tbiFYip6tDNIEBRUDyPQK
- Use of low-level and error-prone data types
- pointer to function
- type casting to void*
- type casting from void*
- "quasi-typed" thread handles
- not portable to non-POSIX platforms
- Limited debugging tools