|
| ThreadPool (const ThreadPool &)=delete |
| No copying. More...
|
|
void | operator= (const ThreadPool &)=delete |
| No copying. More...
|
|
| Object () |
| Creates object. Initializes all internal data structures. More...
|
|
virtual | ~Object () |
| Destroys object. Frees all internal data structures. More...
|
|
| Object (Object const &x) |
| Copy constructor. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
|
|
Object & | operator= (Object const &x) |
| Assignment operator. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
|
|
Object * | SharedRefAdded () |
| Increments shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
|
|
int | SharedRefRemovedSafe () |
| Decrements and returns shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
|
|
int | RemovedSharedRefs (int count) |
| Decreases shared reference count by specified value. More...
|
|
Detail::SmartPtrCounter * | WeakRefAdded () |
| Increments weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
|
|
void | WeakRefRemoved () |
| Decrements weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
|
|
Detail::SmartPtrCounter * | GetCounter () |
| Gets reference counter data structure associated with the object. More...
|
|
int | SharedCount () const |
| Gets current value of shared reference counter. More...
|
|
void | Lock () |
| Implements C# lock() statement locking. Call directly or use LockContext sentry object. More...
|
|
void | Unlock () |
| Implements C# lock() statement unlocking. Call directly or use LockContext sentry object. More...
|
|
virtual bool | Equals (ptr obj) |
| Compares objects using C# Object.Equals semantics. More...
|
|
virtual int32_t | GetHashCode () const |
| Analog of C# Object.GetHashCode() method. Enables hashing of custom objects. More...
|
|
virtual String | ToString () const |
| Analog of C# Object.ToString() method. Enables converting custom objects to string. More...
|
|
virtual ptr | MemberwiseClone () const |
| Analog of C# Object.MemberwiseClone() method. Enables cloning custom types. More...
|
|
virtual const TypeInfo & | GetType () const |
| Gets actual type of object. Analog of C# System.Object.GetType() call. More...
|
|
virtual bool | Is (const TypeInfo &targetType) const |
| Check if object represents an instance of type described by targetType. Analog of C# 'is' operator. More...
|
|
virtual void | SetTemplateWeakPtr (uint32_t argument) |
| Set n'th template argument a weak pointer (rather than shared). Allows switching pointers in containers to weak mode. More...
|
|
virtual bool | FastCast (const Details::FastRttiBase &helper, void **out_ptr) const |
| For internal purposes only. More...
|
|
template<> |
bool | ReferenceEquals (String const &str, std::nullptr_t) |
| Specialization of Object::ReferenceEquals for case of string and nullptr. More...
|
|
template<> |
bool | ReferenceEquals (String const &str1, String const &str2) |
| Specialization of Object::ReferenceEquals for case of strings. More...
|
|
|
static ThreadPoolImpl & | GetInstance () |
| Implementation instance that holds list of jobs and other parameters. More...
|
|
static bool | QueueUserWorkItem (WaitCallback callback) |
| Puts work item into queue which is present with callback with no parameter. More...
|
|
static bool | QueueUserWorkItem (WaitCallback callback, const System::SharedPtr< System::Object > &state) |
| Puts work item into queue which is present with callback with no parameter. More...
|
|
static void | GetAvailableThreads (int &wt, int &cpt) |
| Gets number of available threads. More...
|
|
static void | GetMaxThreads (int &wt, int &cpt) |
| Gets maximal number of concurrent threads. More...
|
|
static void | GetMinThreads (int &wt, int &cpt) |
| Gets minimal number of threads being created by pool. More...
|
|
static bool | SetMaxThreads (int wt, int cpt) |
| Sets number of threads owned by pool. More...
|
|
static bool | SetMinThreads (int wt, int cpt) |
| Sets minimal number of threads owned by pool. More...
|
|
static void | JoinAllThreads () |
| Joins all owned threads. Waits infinitely. More...
|
|
static bool | ReferenceEquals (ptr const &objA, ptr const &objB) |
| Compares objects by reference. More...
|
|
template<typename T > |
static std::enable_if<!IsSmartPtr< T >::value, bool >::type | ReferenceEquals (T const &objA, T const &objB) |
| Compares objects by reference. More...
|
|
template<typename T > |
static std::enable_if<!IsSmartPtr< T >::value, bool >::type | ReferenceEquals (T const &objA, std::nullptr_t) |
| Reference-compares value type object with nullptr. More...
|
|
template<typename T1 , typename T2 > |
static std::enable_if< IsSmartPtr< T1 >::value &&IsSmartPtr< T2 >::value, bool >::type | Equals (T1 const &objA, T2 const &objB) |
| Compares reference type objects in C# style. More...
|
|
template<typename T1 , typename T2 > |
static std::enable_if<!IsSmartPtr< T1 >::value &&!IsSmartPtr< T2 >::value, bool >::type | Equals (T1 const &objA, T2 const &objB) |
| Compares value type objects in C# style. More...
|
|
static const TypeInfo & | Type () |
| Implements C# typeof(System.Object) construct. More...
|
|
template<> |
bool | Equals (float const &objA, float const &objB) |
| Emulates C#-style floating point comparison where two NaNs are considered equal even though according to IEC 60559:1989 NaN is not equal to any value, including NaN. More...
|
|
template<> |
bool | Equals (double const &objA, double const &objB) |
| Emulates C#-style floating point comparison where two NaNs are considered equal even though according to IEC 60559:1989 NaN is not equal to any value, including NaN. More...
|
|
Thread pool API allowing it pushing jobs into queue to be read by pool of worker threads. This is a static type with no instance services. You should never create instances of it by any means.
#include "system/threading/thread_pool.h"
#include "system/threading/thread.h"
#include "system/object.h"
#include "system/smart_ptr.h"
#include <iostream>
#include <mutex>
#include <string>
#include <thread>
const std::string &BooleanToString(bool value)
{
static const std::string True = "True";
static const std::string False = "False";
return value ? True : False;
}
int main()
{
std::mutex m;
const auto threadsCount = std::thread::hardware_concurrency();
for (unsigned int i = 0; i < threadsCount; ++i)
{
m.lock();
std::cout << "Background: " << BooleanToString(thread->get_IsBackground()) <<
", Thread pool: " << BooleanToString(thread->get_IsThreadPoolThread()) <<
", Thread ID: " << thread->get_ManagedThreadId() << std::endl;
m.unlock();
});
}
return 0;
}
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
static System::SharedPtr< Thread > get_CurrentThread()
Gets object which describes current thread.
static void JoinAllThreads()
Joins all owned threads. Waits infinitely.
static bool QueueUserWorkItem(WaitCallback callback)
Puts work item into queue which is present with callback with no parameter.
Definition: exceptions.h:850