任何人都可以帮助写一个在fortran的信号量函数吗?我有多个进程正在运行,我必须使用信号同步它们。这样的代码可以找到C++等,但我找不到任何这样的代码为fortran。fortran的信号量
如果我可以从fortran代码调用C/C++函数,那也足够了,因为C++信号函数已经存在。
PS:(附加说明)以下是适用于C++的代码。我有一些Fortran应用程序(作为标准基准的一部分),但没有信号代码来同步它们。
int get_semaphore()
{
int sem_id;
sem_id = semget(SEM_ID, 1, IPC_CREAT | 0666);
if (sem_id == -1) {
perror("get_semaphore: semget");
exit(1);
}
return sem_id;
}
int set_semaphore (int sem_id, int val)
{
return semctl(sem_id, 0, SETVAL, val);
}
void decrement_semaphore (int sem_id)
{
struct sembuf sem_op;
sem_op.sem_num = 0;
sem_op.sem_op = -1;
sem_op.sem_flg = 0;
semop(sem_id, &sem_op, 1);
}
void wait_semaphore (int sem_id)
{
struct sembuf sem_op;
sem_op.sem_num = 0;
sem_op.sem_op = 0;
sem_op.sem_flg = 0;
semop(sem_id, &sem_op, 1);
}
感谢您的帮助提前。
我会建议你的问题更具体你想完成什么。你有没有尝试过任何东西?你可以发布代码示例吗?您可能需要查看Fortran的MPI:http://www.mcs.anl.gov/research/projects/mpi/ – milancurcic 2011-12-19 17:19:31
@ IRO-bot我给出了一个C++代码片段。我不能使用MPI,因为它不是并行代码:仅仅为了同步,信号量是需要的。除此之外,没有分享。 – user984260 2011-12-19 17:29:39
好的,希望有人能够参与进来,这不是我的领域:) – milancurcic 2011-12-19 17:45:51