diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-19 19:17:08 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-19 19:17:08 +0000 |
commit | ee432ee0a565736be395b8729bc811212fd88bf3 (patch) | |
tree | 4922e685fc7e392d3b67029d4a821adc9d323f1a /base/platform_thread_posix.cc | |
parent | 1d14ba55e2472ad65b41423a6b8ed13b32dc206d (diff) | |
download | chromium_src-ee432ee0a565736be395b8729bc811212fd88bf3.zip chromium_src-ee432ee0a565736be395b8729bc811212fd88bf3.tar.gz chromium_src-ee432ee0a565736be395b8729bc811212fd88bf3.tar.bz2 |
Revert 66719 - Reland r65996. Disallows Singletons on non-joinable thread.
Test breakages caused by this change have been fixed here or in other changelists.
BUG=61753
TEST=none
Review URL: http://codereview.chromium.org/5024003
TBR=willchan@chromium.org
Review URL: http://codereview.chromium.org/5206005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66791 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/platform_thread_posix.cc')
-rw-r--r-- | base/platform_thread_posix.cc | 33 |
1 files changed, 7 insertions, 26 deletions
diff --git a/base/platform_thread_posix.cc b/base/platform_thread_posix.cc index e442e9c..66f3928 100644 --- a/base/platform_thread_posix.cc +++ b/base/platform_thread_posix.cc @@ -7,11 +7,6 @@ #include <errno.h> #include <sched.h> -#include "base/logging.h" -#include "base/safe_strerror_posix.h" -#include "base/scoped_ptr.h" -#include "base/thread_restrictions.h" - #if defined(OS_MACOSX) #include <mach/mach.h> #include <sys/resource.h> @@ -29,27 +24,18 @@ #include <sys/nacl_syscalls.h> #endif +#include "base/logging.h" +#include "base/safe_strerror_posix.h" + #if defined(OS_MACOSX) namespace base { void InitThreading(); } // namespace base #endif -namespace { - -struct ThreadParams { - PlatformThread::Delegate* delegate; - bool joinable; -}; - -} // namespace - -static void* ThreadFunc(void* params) { - ThreadParams* thread_params = static_cast<ThreadParams*>(params); - PlatformThread::Delegate* delegate = thread_params->delegate; - if (!thread_params->joinable) - base::ThreadRestrictions::SetSingletonAllowed(false); - delete thread_params; +static void* ThreadFunc(void* closure) { + PlatformThread::Delegate* delegate = + static_cast<PlatformThread::Delegate*>(closure); delegate->ThreadMain(); return NULL; } @@ -188,14 +174,9 @@ bool CreateThread(size_t stack_size, bool joinable, if (stack_size > 0) pthread_attr_setstacksize(&attributes, stack_size); - ThreadParams* params = new ThreadParams; - params->delegate = delegate; - params->joinable = joinable; - success = !pthread_create(thread_handle, &attributes, ThreadFunc, params); + success = !pthread_create(thread_handle, &attributes, ThreadFunc, delegate); pthread_attr_destroy(&attributes); - if (!success) - delete params; return success; } |