140 iterator& operator++() {
144 bool operator!=(
const iterator& other)
const {
145 return current != other.current;
149 struct iterable_wrapper {
153 iterable_wrapper(
NrnThread* base,
int count)
157 iterator begin()
const {
158 return iterator{base_};
160 iterator end()
const {
161 return iterator{base_ + count_};
165 return iterable_wrapper(threads, num_threads);
#define BEFORE_AFTER_SIZE
void nrn_thread_memblist_setup()
void nrn_thread_error(const char *)
void nrn_multithread_job(worker_job_t)
void(*)(neuron::model_sorted_token const &, NrnThread &) worker_job_with_token_t
struct NrnThreadMembList NrnThreadMembList
int nrn_allow_busywait(int b)
void nrn_onethread_job(int, void *(*)(NrnThread *))
void nrn_thread_table_check(neuron::model_sorted_token const &)
Object ** nrn_get_thread_partition(int it)
void *(*)(NrnThread *) worker_job_t
int nrn_how_many_processors()
auto for_threads(NrnThread *threads, int num_threads)
void nrn_thread_partition(int it, Object *sl)
void nrn_threads_create(int n, bool parallel)
struct NrnThreadBAList NrnThreadBAList
void nrn_wait_for_threads()
std::size_t nof_worker_threads()
bool operator!=(unified_allocator< T > const &x, unified_allocator< U > const &y) noexcept
int const size_t const size_t n
A view into a set of mechanism instances.
struct NrnThreadBAList * next
Represent main neuron object computed by single thread.
double * node_sav_d_storage()
double & actual_d(std::size_t row)
double * node_a_storage()
std::size_t _node_data_offset
Offset in the global node data where this NrnThread's values start.
NrnThreadBAList * tbl[BEFORE_AFTER_SIZE]
double & actual_rhs(std::size_t row)
double * node_sav_rhs_storage()
double * node_rhs_storage()
double * node_area_storage()
double * node_d_storage()
Memb_list * _ecell_memb_list
double * node_voltage_storage()
double * node_b_storage()
struct NrnThreadMembList * next