...
| Code Block | ||||
|---|---|---|---|---|
| ||||
void thread_foo(void *ptr) {
uint32_t num;
int result;
/* sock is a connected TCP socket */
if ((result = recv(sock, (void *)&num, sizeof(uint32_t), O_NONBLOCK)) < 0) {
/* Handle Error */
}
if ((result = pthread_mutex_lock(&mutex)) != 0) {
/* Handle Error */
}
/* ... */
if ((result = pthread_mutex_unlock(&mutex)) != 0) {
/* Handle Error */
}
}
|
Exceptions
CON36POS52-EX1: A thread may block while holding one or more locks and waiting to acquire another lock. When acquiring multiple locks, the order of locking must avoid deadlock, as specified in guideline CON35-C. Avoid deadlock by locking in predefined order.
...