mutex_windows.h

来自「MPI stands for the Message Passing Inter」· C头文件 代码 · 共 90 行

H
90
字号
/* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana *                         University Research and Technology *                         Corporation.  All rights reserved. * Copyright (c) 2004-2005 The University of Tennessee and The University *                         of Tennessee Research Foundation.  All rights *                         reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,  *                         University of Stuttgart.  All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. *                         All rights reserved. * $COPYRIGHT$ *  * Additional copyrights may follow *  * $HEADER$ */#ifndef  OPAL_MUTEX_WINDOWS_H#define  OPAL_MUTEX_WINDOWS_H 1/** * @file: * * Mutual exclusion functions: Windows implementation. * * Functions for locking of critical sections. * * On Windows, base everything on InterlockedExchange(). */#include "opal/class/opal_object.h"#include "opal/sys/atomic.h"#if defined(c_plusplus) || defined(__cplusplus)extern "C" {#endifstruct opal_mutex_t {    opal_object_t super;    volatile LONG m_lock;};OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_mutex_t);static inline int opal_mutex_trylock(opal_mutex_t *m){    return (int) InterlockedExchange(&m->m_lock, 1);}static inline void opal_mutex_lock(opal_mutex_t *m){    while (InterlockedExchange(&m->m_lock, 1)) {        while (m->m_lock == 1) {            /* spin */;        }    }}static inline void opal_mutex_unlock(opal_mutex_t *m){    InterlockedExchange(&m->m_lock, 0);}static inline int opal_mutex_atomic_trylock(opal_mutex_t *m){    return opal_mutex_trylock(m);}static inline void opal_mutex_atomic_lock(opal_mutex_t *m){   opal_mutex_lock(m);}static inline void opal_mutex_atomic_unlock(opal_mutex_t *m){    opal_mutex_unlock(m);}#if defined(c_plusplus) || defined(__cplusplus)}#endif#endif  /* OPAL_MUTEX_WINDOWS_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?