Мне нужно кэшировать указатели файлов в моей программе, но проблема в том, что у меня может быть несколько потоков, обращающихся к кешу указателя на файл. Например, если thread1 запрашивает указатель на файл, и возникает ошибка кеша, вызывается fopen и указатель кэшируется. Теперь, когда поток 2 приходит и происходит кеш, оба файла совместно используют указатель чтения/записи, приводящий к ошибкам. Некоторые вещи я думал -Кэширование указателей файлов в C
- я мог отслеживать, когда файл находится в использовании, но в настоящее время я не знаю, когда он будет выпущен, и в том числе этой функции нарушает мой дизайн
- Я мог бы послать дубликат указателя файла в случае хита, но я не знаю, как это сделать, чтобы эти две копии не делились местами для чтения и записи.
Как следует продолжать?
Зачем вам нужно кэшировать? –
Возможно, каждый поток должен иметь свой собственный кеш? – SteveP
Использовать 'TLS' как @SteveP. Прочтите http://en.wikipedia.org/wiki/Thread-local_storage –