home
about
news
download
doc
source
systems
tests
bugs
contact
IMP Reference Guide
develop.d97d4ead1f,2024/11/21
The Integrative Modeling Platform
IMP Manual
Reference Guide
Tutorial Index
Modules
Classes
Examples
include
IMP
version 20241121.develop.d97d4ead1f
threads.h
Go to the documentation of this file.
1
/**
2
* \file IMP/threads.h
3
* \brief Control for using multiple threads in IMP
4
*
5
* Copyright 2007-2022 IMP Inventors. All rights reserved.
6
*
7
*/
8
9
#ifndef IMPKERNEL_THREADS_H
10
#define IMPKERNEL_THREADS_H
11
#include "
raii_macros.h
"
12
#include <IMP/kernel_config.h>
13
14
IMPKERNEL_BEGIN_NAMESPACE
15
/** \name Number of threads
16
Get and set the default number of threads to use in
17
\imp.
18
@{ */
19
/** Get the current number of threads requested. The default
20
is the number of cores/hardware threads in the machine if
21
there is OpenMP support, or 1 otherwise. */
22
IMPKERNELEXPORT
unsigned
int
get_number_of_threads
();
23
/** Set the current number of threads to a number greater or
24
equal to 1. Setting it to 1 disables multithreaded evaluation.
25
*/
26
IMPKERNELEXPORT
void
set_number_of_threads
(
unsigned
int
n);
27
/** @} */
28
29
/** Temporarily set the number of threads
30
*/
31
class
SetNumberOfThreads
:
public
RAII
{
32
int
num_;
33
34
public
:
35
IMP_RAII
(
SetNumberOfThreads
, (
unsigned
int
n), { num_ = 0; },
36
{
37
num_ =
get_number_of_threads
();
38
set_number_of_threads
(n);
39
},
40
{
41
if
(num_)
set_number_of_threads
(num_);
42
num_ = 0;
43
}, );
44
};
45
46
IMPKERNEL_END_NAMESPACE
47
48
#endif
/* IMPKERNEL_THREADS_H */
IMP::RAII
Temporarily change something; undo the change when this object is destroyed.
Definition:
RAII.h:28
IMP_RAII
#define IMP_RAII(Name, args, Initialize, Set, Reset, Show)
Declares RAII-style methods in a class.
Definition:
raii_macros.h:34
IMP::SetNumberOfThreads
Definition:
threads.h:31
IMP::get_number_of_threads
unsigned int get_number_of_threads()
IMP::set_number_of_threads
void set_number_of_threads(unsigned int n)
raii_macros.h
Macros to aid in writing RAII-style classes.