12年前に書いたコードを晒してみる
http://coderepos.org/share/browser/lang/c/friendsd
マルチプロセス&共有メモリによるダウンロード+ select(2) ベースの配信による finger プロキシ。タイムスタンプ見てると、1995年11月〜1996年10月っぽい。
どうみてもダメダメな reader-writer lock が涙を誘います (http://coderepos.org/share/browser/lang/c/friendsd/shm.c#L108。
void shmEnter( char *mode ) { int waitTime; if( !strcmp( mode, "w" ) ) { flags->wait++; for( waitTime = 0; ; waitTime++ ) { if( !flags->write && !flags->read ) break; usleep( INTERVAL ); } flags->write++; } else { for( waitTime = 0; ; waitTime++ ) { if( !flags->wait ) break; usleep( INTERVAL ); } flags->read++; } if( getShmDebug() ) { fprintf( stderr, " shmEnter( \"%s\" ): %d:%d:%d(w:r:wait)\n", mode, flags->write, flags->read, waitTime ); fflush( stderr ); } }