Ken Hornstein wrote:
>> i propose that
>> the locking fopen function in the MH library be adapted to be willing to
>> try the advisory lock three times at one second intervals, on the
>> assumption that no writer will hold the lock that long and if there's a
>> convoy then we've got bigger problems. (ideally we'd do a wait-lock in a
>> thread and kill that thread if it waits too long, but threads would not
>> be "the MH way".)
>
> I guess I was thinking in my head of the lock completely blocking, but
> you think that having a timeout makes more sense? I'm neutral on that.
> There's not a portable way of having a lock timeout other than loop/sleep,
> is there?
well, yes, we've done it with fork.
if ((child = fork()) == 0) {
sleep(3);
kill(SIGINT, getppid());
_exit(0);
}
if (child > 0) {
flock(LOCK_EX);
kill(SIGINBT, child);
}
so, one of them always has to kill the other, it's just a matter of
whether the lock succeeds in time or not. obviously there's error
checking missing here, and signal catching. but mostly this is a
gigantic performance drainer and should not be done. that's why i
proposed a loop and LOCK_NB.
if "the MH way" could expand to C89 and posix threads, we'd have some
options that were both performance and correct.
paul
_______________________________________________
Nmh-workers mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/nmh-workers