coll/libnbc: add some comments on how locks are used
no code change Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
Этот коммит содержится в:
родитель
d4c4babcc0
Коммит
15098161a3
@ -75,8 +75,8 @@ struct ompi_coll_libnbc_component_t {
|
|||||||
opal_free_list_t requests;
|
opal_free_list_t requests;
|
||||||
opal_list_t active_requests;
|
opal_list_t active_requests;
|
||||||
int32_t active_comms;
|
int32_t active_comms;
|
||||||
opal_atomic_lock_t progress_lock;
|
opal_atomic_lock_t progress_lock; /* protect from recursive calls */
|
||||||
opal_mutex_t lock;
|
opal_mutex_t lock; /* protect access to the active_requests list */
|
||||||
};
|
};
|
||||||
typedef struct ompi_coll_libnbc_component_t ompi_coll_libnbc_component_t;
|
typedef struct ompi_coll_libnbc_component_t ompi_coll_libnbc_component_t;
|
||||||
|
|
||||||
|
@ -263,8 +263,11 @@ ompi_coll_libnbc_progress(void)
|
|||||||
ompi_coll_libnbc_request_t* request, *next;
|
ompi_coll_libnbc_request_t* request, *next;
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
|
/* return if invoked recursively */
|
||||||
if (opal_atomic_trylock(&mca_coll_libnbc_component.progress_lock)) return 0;
|
if (opal_atomic_trylock(&mca_coll_libnbc_component.progress_lock)) return 0;
|
||||||
|
|
||||||
|
/* process active requests, and use mca_coll_libnbc_component.lock to access the
|
||||||
|
* mca_coll_libnbc_component.active_requests list */
|
||||||
OPAL_THREAD_LOCK(&mca_coll_libnbc_component.lock);
|
OPAL_THREAD_LOCK(&mca_coll_libnbc_component.lock);
|
||||||
OPAL_LIST_FOREACH_SAFE(request, next, &mca_coll_libnbc_component.active_requests,
|
OPAL_LIST_FOREACH_SAFE(request, next, &mca_coll_libnbc_component.active_requests,
|
||||||
ompi_coll_libnbc_request_t) {
|
ompi_coll_libnbc_request_t) {
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user