00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #pragma once
00017
00018 #include <drizzled/atomics.h>
00019 #include <drizzled/gettext.h>
00020 #include <drizzled/error.h>
00021 #include <drizzled/plugin/scheduler.h>
00022 #include <drizzled/internal/my_sys.h>
00023 #include <drizzled/sql_parse.h>
00024 #include <string>
00025
00026 namespace drizzled {
00027 class Session;
00028 }
00029
00030 namespace multi_thread {
00031
00032 class MultiThreadScheduler: public drizzled::plugin::Scheduler
00033 {
00034 private:
00035 drizzled::atomic<uint32_t> thread_count;
00036
00037 public:
00038 MultiThreadScheduler(const char *name_arg):
00039 Scheduler(name_arg)
00040 {
00041 setStackSize();
00042 thread_count= 0;
00043 }
00044
00045 ~MultiThreadScheduler();
00046 bool addSession(drizzled::Session::shared_ptr &session);
00047 void killSessionNow(drizzled::Session::shared_ptr &session);
00048 void killSession(drizzled::Session*);
00049
00050 void runSession(drizzled::session_id_t);
00051 private:
00052 void setStackSize();
00053 };
00054
00055 }
00056