누구든지 포트란에 세마포어 기능을 쓸 수 있습니까? 여러 프로세스가 실행 중이고 세마포어를 사용하여 동기화해야합니다. 이러한 코드는 C++ 등에서 찾을 수 있지만 fortran에 대해서는 그런 코드를 찾을 수 없습니다.포트란에 대한 세마포어
Fortran 코드에서 C/C++ 함수를 호출 할 수 있다면 C++ 세마포어 함수가 이미 있으므로이 코드로도 충분합니다.
추신 : (추가 설명) 다음은 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
@ IRO-bot C++ 코드 조각을 제공했습니다. MPI는 병렬 코드가 아니기 때문에 사용할 수 없습니다. 동기화를 위해서는 세마포가 필요합니다. 그 외에는 공유가 없습니다. – user984260
OK, 잘하면 누군가가칩니다, 이건 내 도메인이 아니야 :) – milancurcic