From dd8f8c01b7ba425da7db008c33a3cff9325b65d8 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 11 Nov 2006 17:02:08 +0000 Subject: r19666: Talloc_guide text on multithreading by Remi Turboult (This used to be commit 36a7bf738afd466e378fb2f09d1ce0b47ec924a4) --- source3/lib/talloc/talloc_guide.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'source3/lib/talloc') diff --git a/source3/lib/talloc/talloc_guide.txt b/source3/lib/talloc/talloc_guide.txt index 83f524862f..8b252e4ab9 100644 --- a/source3/lib/talloc/talloc_guide.txt +++ b/source3/lib/talloc/talloc_guide.txt @@ -56,6 +56,22 @@ talloc API The following is a complete guide to the talloc API. Read it all at least twice. +Multi-threading +--------------- + +talloc itself does not deal with threads. It is thread-safe (assuming +the underlying "malloc" is), as long as each thread uses different +memory contexts. +If two threads uses the same context then they need to synchronize in +order to be safe. In particular: +- when using talloc_enable_leak_report(), giving directly NULL as a +parent context implicitly refers to a hidden "null context" global +variable, so this should not be used in a multi-threaded environment +without proper synchronization ; +- the context returned by talloc_autofree_context() is also global so +shouldn't be used by several threads simultaneously without +synchronization. + =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- (type *)talloc(const void *context, type); -- cgit