]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 23 Mar 2012 17:20:24 +0000 (17:20 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 23 Mar 2012 17:20:24 +0000 (17:20 +0000)
common/executor.h

index e00c422c1c12014d3234ce4dad869adecb20bda6..41997681d999ca5e0f73e4c78ce088461e3b40bf 100644 (file)
@@ -82,21 +82,22 @@ class executor
        executor& operator=(const executor&);\r
        \r
        typedef tbb::concurrent_priority_queue<priority_function>       function_queue_t;\r
-\r
+       \r
+       const std::wstring                                                                                      name_;\r
        tbb::atomic<bool>                                                                                       is_running_;\r
        boost::thread                                                                                           thread_;        \r
        function_queue_t                                                                                        execution_queue_;\r
        tbb::concurrent_bounded_queue<int>                                                      semaphore_;\r
                \r
 public:                \r
-       executor(const std::wstring& name) // noexcept\r
+       executor(const std::wstring& name)\r
+               : name_(name)\r
        {\r
-               name; // TODO: Use to set thread name.\r
                is_running_ = true;\r
                thread_ = boost::thread([this]{run();});\r
        }\r
        \r
-       virtual ~executor() // noexcept\r
+       virtual ~executor()\r
        {\r
                stop();\r
                thread_.join();\r
@@ -105,11 +106,11 @@ public:
        template<typename Func>\r
        auto begin_invoke(Func&& func, task_priority priority = task_priority::normal_priority) -> boost::unique_future<decltype(func())> // noexcept\r
        {       \r
-               if(execution_queue_.size() > 256)\r
-                       BOOST_THROW_EXCEPTION(invalid_operation() << msg_info("executor overflow."));\r
+               if(execution_queue_.size() > 128)\r
+                       BOOST_THROW_EXCEPTION(invalid_operation() << msg_info("executor overflow.") << source_info(name_));\r
 \r
                if(!is_running_)\r
-                       BOOST_THROW_EXCEPTION(invalid_operation() << msg_info("executor not running."));\r
+                       BOOST_THROW_EXCEPTION(invalid_operation() << msg_info("executor not running.") << source_info(name_));\r
                                \r
                typedef typename std::remove_reference<Func>::type      function_type;\r
                typedef decltype(func())                                                        result_type;\r
@@ -172,10 +173,10 @@ public:
                return begin_invoke(std::forward<Func>(func), prioriy).get();\r
        }\r
 \r
-       void yield() // noexcept\r
+       void yield()\r
        {\r
                if(!is_current())\r
-                       BOOST_THROW_EXCEPTION(invalid_operation() << msg_info("Executor can only yield inside of thread context."));\r
+                       BOOST_THROW_EXCEPTION(invalid_operation() << msg_info("Executor can only yield inside of thread context.")  << source_info(name_));\r
 \r
                int dummy;\r
                semaphore_.pop(dummy);\r
@@ -185,7 +186,7 @@ public:
                        func();\r
        }\r
 \r
-       void set_capacity(std::size_t capacity) // noexcept\r
+       void set_capacity(std::size_t capacity)\r
        {\r
                semaphore_.set_capacity(capacity);\r
        }\r