这篇教程C++ tMPI_Thread_mutex_lock函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中tMPI_Thread_mutex_lock函数的典型用法代码示例。如果您正苦于以下问题:C++ tMPI_Thread_mutex_lock函数的具体用法?C++ tMPI_Thread_mutex_lock怎么用?C++ tMPI_Thread_mutex_lock使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了tMPI_Thread_mutex_lock函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: gmx_fio_closeint gmx_fio_close(t_fileio *fio){ int rc = 0; /* first lock the big open_files mutex. */ /* We don't want two processes operating on the list at the same time */ tMPI_Thread_mutex_lock(&open_file_mutex); if (fio->iFTP == efTNG) { gmx_incons("gmx_fio_close should not be called on a TNG file"); } gmx_fio_lock(fio); /* first remove it from the list */ gmx_fio_remove(fio); rc = gmx_fio_close_locked(fio); gmx_fio_unlock(fio); sfree(fio->fn); sfree(fio); tMPI_Thread_mutex_unlock(&open_file_mutex); return rc;}
开发者ID:daniellandau,项目名称:gromacs,代码行数:25,
示例2: tMPI_Thread_mutex_lock/* get the first open file, or NULL if there is none. Returns a locked fio. */static t_fileio *gmx_fio_get_first(void){ t_fileio *ret; /* first lock the big open_files mutex and the dummy's mutex */#ifdef GMX_THREAD_MPI /* first lock the big open_files mutex. */ tMPI_Thread_mutex_lock(&open_file_mutex);#endif gmx_fio_make_dummy(); gmx_fio_lock(open_files); ret = open_files->next; /* check whether there were any to begin with */ if (ret == open_files) { /* after this, the open_file pointer should never change */ ret = NULL; } else { gmx_fio_lock(open_files->next); } gmx_fio_unlock(open_files); return ret;}
开发者ID:yhalcyon,项目名称:Gromacs,代码行数:32,
示例3: tMPI_Thread_mutex_lockconst char *ftp2defnm(int ftp){ const char *buf = NULL;#ifdef GMX_THREAD_MPI tMPI_Thread_mutex_lock(&filenm_mutex);#endif if (default_file_name) { buf = default_file_name; } else { if ((0 <= ftp) && (ftp < efNR)) { buf = deffile[ftp].defnm; } }#ifdef GMX_THREAD_MPI tMPI_Thread_mutex_unlock(&filenm_mutex);#endif return buf;}
开发者ID:alwanderer,项目名称:gromacs,代码行数:25,
示例4: set_command_linevoid set_command_line(int argc, char *argv[]){ int i; size_t cmdlength;#ifdef GMX_THREADS tMPI_Thread_mutex_lock(&init_mutex);#endif if (cmd_line==NULL) { cmdlength = strlen(argv[0]); for (i=1; i<argc; i++) { cmdlength += strlen(argv[i]); } /* Fill the cmdline string */ snew(cmd_line,cmdlength+argc+1); for (i=0; i<argc; i++) { strcat(cmd_line,argv[i]); strcat(cmd_line," "); } }#ifdef GMX_THREADS tMPI_Thread_mutex_unlock(&init_mutex);#endif}
开发者ID:andersx,项目名称:gmx-debug,代码行数:29,
示例5: tMPI_Atomic_ptr_getvoid* tMPI_Atomic_ptr_get(const tMPI_Atomic_ptr_t *a){ void* ret; tMPI_Thread_mutex_lock(&tMPI_Atomic_mutex); ret = a->value; tMPI_Thread_mutex_unlock(&tMPI_Atomic_mutex); return ret;}
开发者ID:BradleyDickson,项目名称:fABMACS,代码行数:8,
示例6: tMPI_Atomic_getint tMPI_Atomic_get(const tMPI_Atomic_t *a){ int ret; tMPI_Thread_mutex_lock(&tMPI_Atomic_mutex); ret = a->value; tMPI_Thread_mutex_unlock(&tMPI_Atomic_mutex); return ret;}
开发者ID:BradleyDickson,项目名称:fABMACS,代码行数:8,
示例7: tMPI_Spinlock_initvoid tMPI_Spinlock_init( tMPI_Spinlock_t *x){ tMPI_Thread_mutex_lock(&tMPI_Atomic_mutex); *x = (tMPI_Spinlock_t)malloc(sizeof(tMPI_Spinlock_t)); (*x)->lock = (tMPI_Thread_mutex_t*)malloc(sizeof(tMPI_Thread_mutex_t)); tMPI_Thread_mutex_init((*x)->lock); tMPI_Thread_mutex_unlock(&tMPI_Atomic_mutex);}
开发者ID:BradleyDickson,项目名称:fABMACS,代码行数:8,
示例8: setTimeValuevoid setTimeValue(int tcontrol, real value){ tMPI_Thread_mutex_lock(&tc_mutex); range_check(tcontrol, 0, TNR); timecontrol[tcontrol].t = value; timecontrol[tcontrol].bSet = TRUE; tMPI_Thread_mutex_unlock(&tc_mutex);}
开发者ID:daniellandau,项目名称:gromacs,代码行数:8,
示例9: tMPI_Atomic_add_returnint tMPI_Atomic_add_return(tMPI_Atomic_t *a, int i){ int t; tMPI_Thread_mutex_lock(&tMPI_Atomic_mutex); t = a->value + i; a->value = t; tMPI_Thread_mutex_unlock(&tMPI_Atomic_mutex); return t;}
开发者ID:BradleyDickson,项目名称:fABMACS,代码行数:9,
示例10: gmx_ffcloseint gmx_ffclose(FILE *fp){#ifdef SKIP_FFOPS return fclose(fp);#else t_pstack *ps, *tmp; int ret = 0; tMPI_Thread_mutex_lock(&pstack_mutex); ps = pstack; if (ps == NULL) { if (fp != NULL) { ret = fclose(fp); } } else if (ps->fp == fp) { if (fp != NULL) { ret = pclose(fp); } pstack = pstack->prev; sfree(ps); } else { while ((ps->prev != NULL) && (ps->prev->fp != fp)) { ps = ps->prev; } if ((ps->prev != NULL) && ps->prev->fp == fp) { if (ps->prev->fp != NULL) { ret = pclose(ps->prev->fp); } tmp = ps->prev; ps->prev = ps->prev->prev; sfree(tmp); } else { if (fp != NULL) { ret = fclose(fp); } } } tMPI_Thread_mutex_unlock(&pstack_mutex); return ret;#endif}
开发者ID:pjohansson,项目名称:gromacs,代码行数:56,
示例11: rTimeValuereal rTimeValue(int tcontrol){ real ret; tMPI_Thread_mutex_lock(&tc_mutex); range_check(tcontrol, 0, TNR); ret = timecontrol[tcontrol].t; tMPI_Thread_mutex_unlock(&tc_mutex); return ret;}
开发者ID:daniellandau,项目名称:gromacs,代码行数:10,
示例12: tMPI_Atomic_swapint tMPI_Atomic_swap(tMPI_Atomic_t *a, int b){ int ret; tMPI_Thread_mutex_lock(&tMPI_Atomic_mutex); ret = a->value; a->value = b; tMPI_Thread_mutex_unlock(&tMPI_Atomic_mutex); return ret;}
开发者ID:BradleyDickson,项目名称:fABMACS,代码行数:10,
示例13: tMPI_Atomic_fetch_addint tMPI_Atomic_fetch_add(tMPI_Atomic_t *a, int i){ int old_value; tMPI_Thread_mutex_lock(&tMPI_Atomic_mutex); old_value = a->value; a->value = old_value + i; tMPI_Thread_mutex_unlock(&tMPI_Atomic_mutex); return old_value;}
开发者ID:BradleyDickson,项目名称:fABMACS,代码行数:10,
示例14: call_error_handlerstatic void call_error_handler(const char *key, const char *file, int line, const char *msg){ if (msg == NULL) { msg = "Empty gmx_fatal message (bug)."; } tMPI_Thread_mutex_lock(&error_mutex); gmx_error_handler(gmx_strerror(key), msg, file, line); tMPI_Thread_mutex_unlock(&error_mutex);}
开发者ID:wangxubo0201,项目名称:gromacs,代码行数:10,
示例15: gmx_nonbonded_setupvoidgmx_nonbonded_setup(t_forcerec * fr, gmx_bool bGenericKernelOnly){ tMPI_Thread_mutex_lock(&nonbonded_setup_mutex); /* Here we are guaranteed only one thread made it. */ if (nonbonded_setup_done == FALSE) { if (bGenericKernelOnly == FALSE) { /* Add the generic kernels to the structure stored statically in nb_kernel.c */ nb_kernel_list_add_kernels(kernellist_c, kernellist_c_size); if (!(fr != NULL && fr->use_simd_kernels == FALSE)) { /* Add interaction-specific kernels for different architectures */ /* Single precision */#if (defined GMX_SIMD_X86_SSE2) && !(defined GMX_DOUBLE) nb_kernel_list_add_kernels(kernellist_sse2_single, kernellist_sse2_single_size);#endif#if (defined GMX_SIMD_X86_SSE4_1) && !(defined GMX_DOUBLE) nb_kernel_list_add_kernels(kernellist_sse4_1_single, kernellist_sse4_1_single_size);#endif#if (defined GMX_SIMD_X86_AVX_128_FMA) && !(defined GMX_DOUBLE) nb_kernel_list_add_kernels(kernellist_avx_128_fma_single, kernellist_avx_128_fma_single_size);#endif#if (defined GMX_SIMD_X86_AVX_256_OR_HIGHER) && !(defined GMX_DOUBLE) nb_kernel_list_add_kernels(kernellist_avx_256_single, kernellist_avx_256_single_size);#endif /* Double precision */#if (defined GMX_SIMD_X86_SSE2 && defined GMX_DOUBLE) nb_kernel_list_add_kernels(kernellist_sse2_double, kernellist_sse2_double_size);#endif#if (defined GMX_SIMD_X86_SSE4_1 && defined GMX_DOUBLE) nb_kernel_list_add_kernels(kernellist_sse4_1_double, kernellist_sse4_1_double_size);#endif#if (defined GMX_SIMD_X86_AVX_128_FMA && defined GMX_DOUBLE) nb_kernel_list_add_kernels(kernellist_avx_128_fma_double, kernellist_avx_128_fma_double_size);#endif#if (defined GMX_SIMD_X86_AVX_256_OR_HIGHER && defined GMX_DOUBLE) nb_kernel_list_add_kernels(kernellist_avx_256_double, kernellist_avx_256_double_size);#endif#if (defined GMX_SIMD_SPARC64_HPC_ACE && defined GMX_DOUBLE) nb_kernel_list_add_kernels(kernellist_sparc64_hpc_ace_double, kernellist_sparc64_hpc_ace_double_size);#endif ; /* empty statement to avoid a completely empty block */ } } /* Create a hash for faster lookups */ nb_kernel_list_hash_init(); nonbonded_setup_done = TRUE; } tMPI_Thread_mutex_unlock(&nonbonded_setup_mutex);}
开发者ID:daniellandau,项目名称:gromacs,代码行数:55,
示例16: tMPI_Spinlock_init_once/* NOTE: assumes atomic mutex is locked */static void tMPI_Spinlock_init_once(tMPI_Spinlock_t *x){ tMPI_Thread_mutex_lock(&tMPI_Atomic_mutex); if (!*x) { *x = (tMPI_Spinlock_t)malloc(sizeof(tMPI_Spinlock_t)); (*x)->lock = (tMPI_Thread_mutex_t*)malloc(sizeof(tMPI_Thread_mutex_t)); tMPI_Thread_mutex_init((*x)->lock); } tMPI_Thread_mutex_unlock(&tMPI_Atomic_mutex);}
开发者ID:BradleyDickson,项目名称:fABMACS,代码行数:12,
示例17: bTimeSetgmx_bool bTimeSet(int tcontrol){ gmx_bool ret; tMPI_Thread_mutex_lock(&tc_mutex); range_check(tcontrol, 0, TNR); ret = timecontrol[tcontrol].bSet; tMPI_Thread_mutex_unlock(&tc_mutex); return ret;}
开发者ID:daniellandau,项目名称:gromacs,代码行数:11,
示例18: tMPI_Thread_mutex_lockvoid *tMPI_Atomic_ptr_swap(tMPI_Atomic_ptr_t *a, void *b){ void *ret; tMPI_Thread_mutex_lock(&tMPI_Atomic_mutex); ret = a->value; a->value = b; tMPI_Thread_mutex_unlock(&tMPI_Atomic_mutex); return ret;}
开发者ID:BradleyDickson,项目名称:fABMACS,代码行数:11,
示例19: tMPI_Thread_mutex_lockconst char *command_line(void){ const char *ret;#ifdef GMX_THREADS tMPI_Thread_mutex_lock(&init_mutex);#endif ret=cmd_line; #ifdef GMX_THREADS tMPI_Thread_mutex_unlock(&init_mutex);#endif return ret;}
开发者ID:andersx,项目名称:gmx-debug,代码行数:12,
示例20: setTimeValuevoid setTimeValue(int tcontrol, real value){#ifdef GMX_THREAD_MPI tMPI_Thread_mutex_lock(&tc_mutex);#endif range_check(tcontrol, 0, TNR); timecontrol[tcontrol].t = value; timecontrol[tcontrol].bSet = TRUE;#ifdef GMX_THREAD_MPI tMPI_Thread_mutex_unlock(&tc_mutex);#endif}
开发者ID:yhalcyon,项目名称:Gromacs,代码行数:12,
示例21: push_psvoid push_ps(FILE *fp){ t_pstack *ps; tMPI_Thread_mutex_lock(&pstack_mutex); snew(ps, 1); ps->fp = fp; ps->prev = pstack; pstack = ps; tMPI_Thread_mutex_unlock(&pstack_mutex);}
开发者ID:pjohansson,项目名称:gromacs,代码行数:13,
示例22: tMPI_Atomic_ptr_casint tMPI_Atomic_ptr_cas(tMPI_Atomic_ptr_t * a, void *old_val, void *new_val){ int t = 0; tMPI_Thread_mutex_lock(&tMPI_Atomic_mutex); if (a->value == old_val) { a->value = new_val; t = 1; } tMPI_Thread_mutex_unlock(&tMPI_Atomic_mutex); return t;}
开发者ID:BradleyDickson,项目名称:fABMACS,代码行数:13,
示例23: set_shift_constsvoid set_shift_consts(FILE *log,real r1,real rc,rvec box,t_forcerec *fr){#ifdef GMX_THREADS /* at the very least we shouldn't allow multiple threads to set these simulataneously */ tMPI_Thread_mutex_lock(&shift_mutex);#endif /* A, B and C are recalculated in tables.c */ if (r1 < rc) { A = (2*r1-5*rc)/(p3(rc)*p2(rc-r1)); B = (4*rc-2*r1)/(p3(rc)*p3(rc-r1)); /*C = (10*rc*rc-5*rc*r1+r1*r1)/(6*rc*rc); Hermans Eq. not correct */ } else gmx_fatal(FARGS,"r1 (%f) >= rc (%f) in %s, line %d", r1,rc,__FILE__,__LINE__); A_3 = A/3.0; B_4 = B/4.0; C = 1/rc-A_3*p3(rc-r1)-B_4*p4(rc-r1); N0 = 2.0*M_PI*p3(rc)*p3(rc-r1); Vol =(box[XX]*box[YY]*box[ZZ]); FourPi_V=4.0*M_PI/Vol; if (debug) { fprintf(debug,"Constants for short-range and fourier stuff:/n" "r1 = %10.3f, rc = %10.3f/n" "A = %10.3e, B = %10.3e, C = %10.3e, FourPi_V = %10.3e/n", r1,rc,A,B,C,FourPi_V); } /* Constants derived by Mathematica */ c1 = -40*rc*rc + 50*rc*r1 - 16*r1*r1; c2 = 60*rc - 30*r1; c3 = -10*rc*rc*rc + 20*rc*rc*r1 - 13*rc*r1*r1 + 3*r1*r1*r1; c4 = -20*rc*rc + 40*rc*r1 - 14*r1*r1; c5 = -c2; c6 = -5*rc*rc*r1 + 7*rc*r1*r1 - 2*r1*r1*r1; if (debug) { fprintf(debug,"c1 = %10.3e, c2 = %10.3e, c3 = %10.3e/n" "c4 = %10.3e, c5 = %10.3e, c6 = %10.3e, N0 = %10.3e/n", c1,c2,c3,c4,c5,c6,N0); } One_4pi = 1.0/(4.0*M_PI);#ifdef GMX_THREADS tMPI_Thread_mutex_unlock(&shift_mutex);#endif}
开发者ID:TTarenzi,项目名称:MMCG-HAdResS,代码行数:51,
示例24: rTimeValuereal rTimeValue(int tcontrol){ real ret;#ifdef GMX_THREAD_MPI tMPI_Thread_mutex_lock(&tc_mutex);#endif range_check(tcontrol, 0, TNR); ret = timecontrol[tcontrol].t;#ifdef GMX_THREAD_MPI tMPI_Thread_mutex_unlock(&tc_mutex);#endif return ret;}
开发者ID:yhalcyon,项目名称:Gromacs,代码行数:14,
示例25: bTimeSetgmx_bool bTimeSet(int tcontrol){ gmx_bool ret;#ifdef GMX_THREAD_MPI tMPI_Thread_mutex_lock(&tc_mutex);#endif range_check(tcontrol, 0, TNR); ret = timecontrol[tcontrol].bSet;#ifdef GMX_THREAD_MPI tMPI_Thread_mutex_unlock(&tc_mutex);#endif return ret;}
开发者ID:yhalcyon,项目名称:Gromacs,代码行数:15,
示例26: push_psvoid push_ps(FILE *fp){ t_pstack *ps;#ifdef GMX_THREADS tMPI_Thread_mutex_lock(&pstack_mutex);#endif snew(ps,1); ps->fp = fp; ps->prev = pstack; pstack = ps;#ifdef GMX_THREADS tMPI_Thread_mutex_unlock(&pstack_mutex);#endif}
开发者ID:andersx,项目名称:gmx-debug,代码行数:16,
示例27: log_actionstatic void log_action(int bMal,const char *what,const char *file,int line, int nelem,int size,void *ptr){ static int btot=0; char *NN = "NULL"; int bytes; bytes=size*nelem; if (!bMal) bytes=-bytes; #ifdef GMX_THREAD_MPI tMPI_Thread_mutex_lock(&gmx_logfile_mtx);#endif /* This total memory count is not correct, since with realloc * it adds the whole size again, not just the increment. */ /* This static variable is protected by the mutex too... */ btot+=bytes; bytes/=1024; if (debug && (bytes != 0)) { fprintf(debug,"%s:%d kB (%7d kB) [%s, line %d, nelem %d, size %d]/n", what ? what : NN,bytes,btot/1024, file ? file : NN,line,nelem,size); } /* Print to stderr for things larger than 1 MB */ if (bytes >= 1024 || bytes <= -1024) { char *fname=NULL; if (file) { fname = strrchr(file,DIR_SEPARATOR); if (fname) { fname++; } else { fname = file; } } printf("%s: %.1f MB [%s, line %d, nelem %d, size %d]/n", what ? what : NN,bytes/1024.0, file ? fname : NN,line,nelem,size); }#ifdef GMX_THREAD_MPI tMPI_Thread_mutex_unlock(&gmx_logfile_mtx);#endif}
开发者ID:alexholehouse,项目名称:gromacs,代码行数:46,
示例28: is_pipegmx_bool is_pipe(FILE *fp){ tMPI_Thread_mutex_lock(&pstack_mutex); t_pstack *ps = pstack; while (ps != NULL) { if (ps->fp == fp) { tMPI_Thread_mutex_unlock(&pstack_mutex); return TRUE; } ps = ps->prev; } tMPI_Thread_mutex_unlock(&pstack_mutex); return FALSE;}
开发者ID:arrow50311,项目名称:GMX504-ryan-v5.0,代码行数:17,
注:本文中的tMPI_Thread_mutex_lock函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ tSystemDebug函数代码示例 C++ tError函数代码示例 |