[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Realloc is blocking execution



On Tue, 13 Oct 2009, Felipe Sateler wrote:

I've always assumed that malloc (and thus realloc) can sleep.

I believe the creators of the Single UNIX Specification didn't share (or at least, didn't codify) this assumption. As a general rule, any system interface that is designed to wait (= hang indefinitely) on a resource

- can be either used in some non-blocking way when it returns EAGAIN,
- or it can be interrupted by a signal, when it returns -1 and sets errno
  to EINTR,
- or you can specify a time limit,
- or it is a thread cancellation point.

In short, if a system interface goes to sleep by design, it can be woken up in a way or another, or else the system interface description explicitly says it cannot be woken up. The malloc() description under [0] makes me think that malloc() cannot hang indefinitely by design.

[0] http://www.opengroup.org/onlinepubs/9699919799/functions/malloc.html

Cheers,
lacos


Reply to: