Reputation: 2019
I'm writing an application in c which uses POSIX pthreads. In each thread there is a function which does malloc
. So my questions are:
1) Am I guaranteed that each thread allocates a different, non-overlapping block of memory?
2) Is there access to the allocated memory from the main thread (which created the other threads that allocate memory)?
I am using gcc compiler on Windows, but I would like to know the answer for both Windows and Linux.
Thanks
Upvotes: 4
Views: 3329
Reputation: 15229
From man malloc
:
+---------------------+---------------+---------+
| Interface | Attribute | Value |
+---------------------+---------------+---------+
| malloc(), free(), | Thread safety | MT-Safe |
| calloc(), realloc() | | |
+---------------------+---------------+---------+
malloc
& friends is thread-safe, so I don't think there's more to say. Since they all conform to C99, this holds true for both Linux and Windows.
Upvotes: 4
Reputation: 93172
malloc()
is thread-safe in that it can be used in multiple threads concurrently. Typically, malloc()
employs internal locking for this purpose.Upvotes: 7