mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 19:03:59 +08:00
Release cache while holding thread lock.
Don't bother to hold thread lock while allocating cache. From-SVN: r167784
This commit is contained in:
parent
3a9ed12a58
commit
cac7efc966
@ -107,11 +107,11 @@ remove_current_thread (void)
|
||||
if (list_entry->next != NULL)
|
||||
list_entry->next->prev = list_entry->prev;
|
||||
|
||||
runtime_MCache_ReleaseAll (mcache);
|
||||
|
||||
i = pthread_mutex_unlock (&__go_thread_ids_lock);
|
||||
__go_assert (i == 0);
|
||||
|
||||
runtime_MCache_ReleaseAll (mcache);
|
||||
|
||||
runtime_lock (&runtime_mheap);
|
||||
mstats.heap_alloc += mcache->local_alloc;
|
||||
mstats.heap_objects += mcache->local_objects;
|
||||
@ -225,14 +225,13 @@ __go_go (void (*pfn) (void*), void *arg)
|
||||
|
||||
newm->list_entry = list_entry;
|
||||
|
||||
newm->mcache = runtime_allocmcache ();
|
||||
|
||||
/* Add the thread to the list of all threads, marked as tentative
|
||||
since it is not yet ready to go. */
|
||||
i = pthread_mutex_lock (&__go_thread_ids_lock);
|
||||
__go_assert (i == 0);
|
||||
|
||||
/* We use __go_thread_ids_lock as a lock for mheap.cachealloc. */
|
||||
newm->mcache = runtime_allocmcache ();
|
||||
|
||||
if (__go_all_thread_ids != NULL)
|
||||
__go_all_thread_ids->prev = list_entry;
|
||||
list_entry->next = __go_all_thread_ids;
|
||||
|
Loading…
Reference in New Issue
Block a user