任何人都可以幫助寫一個在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