Geant4-11
Enumerations | Functions
PTL::Threading Namespace Reference

Enumerations

enum  { SEQUENTIAL_ID = -2 , MASTER_ID = -1 , WORKER_ID = 0 , GENERICTHREAD_ID = -1000 }
 

Functions

unsigned GetNumberOfCores ()
 
Pid_t GetPidId ()
 
int GetThreadId ()
 
bool SetPinAffinity (int idx, NativeThread &at)
 
void SetThreadId (int aNewValue)
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
SEQUENTIAL_ID 
MASTER_ID 
WORKER_ID 
GENERICTHREAD_ID 

Definition at line 145 of file Threading.hh.

146{
147 SEQUENTIAL_ID = -2,
148 MASTER_ID = -1,
149 WORKER_ID = 0,
150 GENERICTHREAD_ID = -1000
151};

Function Documentation

◆ GetNumberOfCores()

unsigned PTL::Threading::GetNumberOfCores ( )

Definition at line 60 of file Threading.cc.

61{
62 return std::thread::hardware_concurrency();
63}

Referenced by PTL::ThreadPool::execute_on_all_threads(), and PTL::ThreadPool::execute_on_specific_threads().

◆ GetPidId()

Pid_t PTL::Threading::GetPidId ( )

Definition at line 51 of file Threading.cc.

52{
53 // In multithreaded mode return Thread ID
54 return std::this_thread::get_id();
55}

◆ GetThreadId()

int PTL::Threading::GetThreadId ( )

Definition at line 74 of file Threading.cc.

75{
76 return ThreadID;
77}

References anonymous_namespace{Threading.cc}::ThreadID.

◆ SetPinAffinity()

bool PTL::Threading::SetPinAffinity ( int  idx,
NativeThread at 
)

Definition at line 82 of file Threading.cc.

83{
84#if defined(__linux__) || defined(_AIX)
85 cpu_set_t* aset = new cpu_set_t;
86 CPU_ZERO(aset);
87 CPU_SET(cpu, aset);
88 pthread_t& _aT = static_cast<pthread_t&>(aT);
89 return (pthread_setaffinity_np(_aT, sizeof(cpu_set_t), aset) == 0);
90#else // Not available for Mac, WIN,...
91 ConsumeParameters(cpu, aT);
92 return true;
93#endif
94}
void ConsumeParameters(Args...)
Definition: Utility.hh:44

References PTL::ConsumeParameters().

Referenced by PTL::ThreadPool::set_affinity(), and G4RunMessenger::SetNewValue().

◆ SetThreadId()

void PTL::Threading::SetThreadId ( int  aNewValue)

Definition at line 68 of file Threading.cc.

69{
70 ThreadID = value;
71}

References anonymous_namespace{Threading.cc}::ThreadID.

Referenced by PTL::ThreadPool::add_thread_id(), and PTL::ThreadPool::start_thread().