Shadowrun: Awakened 29 September 2011 - Build 871
task_scheduler_init.h
Go to the documentation of this file.
00001 /*
00002     Copyright 2005-2010 Intel Corporation.  All Rights Reserved.
00003 
00004     This file is part of Threading Building Blocks.
00005 
00006     Threading Building Blocks is free software; you can redistribute it
00007     and/or modify it under the terms of the GNU General Public License
00008     version 2 as published by the Free Software Foundation.
00009 
00010     Threading Building Blocks is distributed in the hope that it will be
00011     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
00012     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013     GNU General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License
00016     along with Threading Building Blocks; if not, write to the Free Software
00017     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00018 
00019     As a special exception, you may use this file as part of a free software
00020     library without restriction.  Specifically, if other files instantiate
00021     templates or use macros or inline functions from this file, or you compile
00022     this file and link it with other files to produce an executable, this
00023     file does not by itself cause the resulting executable to be covered by
00024     the GNU General Public License.  This exception does not however
00025     invalidate any other reasons why the executable file might be covered by
00026     the GNU General Public License.
00027 */
00028 
00029 #ifndef __TBB_task_scheduler_init_H
00030 #define __TBB_task_scheduler_init_H
00031 
00032 #include "tbb_stddef.h"
00033 
00034 namespace tbb {
00035 
00036 typedef std::size_t stack_size_type;
00037 
00039 namespace internal {
00041 
00042     class scheduler;
00043 } // namespace internal
00045 
00047 
00050 class task_scheduler_init: internal::no_copy {
00052     internal::scheduler* my_scheduler;
00053 public:
00054 
00056     static const int automatic = -1;
00057 
00059     static const int deferred = -2;
00060 
00062 
00070     void __TBB_EXPORTED_METHOD initialize( int number_of_threads=automatic );
00071 
00073 
00074     void __TBB_EXPORTED_METHOD initialize( int number_of_threads, stack_size_type thread_stack_size );
00075 
00077     void __TBB_EXPORTED_METHOD terminate();
00078 
00080     task_scheduler_init( int number_of_threads=automatic, stack_size_type thread_stack_size=0 ) : my_scheduler(NULL)  {
00081         initialize( number_of_threads, thread_stack_size );
00082     }
00083 
00085     ~task_scheduler_init() {
00086         if( my_scheduler ) 
00087             terminate();
00088         internal::poison_pointer( my_scheduler );
00089     }
00091 
00098     static int __TBB_EXPORTED_FUNC default_num_threads ();
00099 
00101     bool is_active() const { return my_scheduler != NULL; }
00102 };
00103 
00104 } // namespace tbb
00105 
00106 #endif /* __TBB_task_scheduler_init_H */

Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.

GNU Lesser General Public License 3 Sourceforge.net