Возможно, вам нужен собственный код / библиотека, способная обрабатывать часовые пояса.Обработка стандартной библиотеки очень обратная и не подходит для работы с чем-то более сложным, чем один часовой пояс, который установлен на время жизни программы.
Однако одним из возможных решений было бы выделение разделяемой памяти, fork
и измените часовой пояс в дочернем процессе, затем передайте результат обратно через разделяемую память для чтения после возврата waitpid
в родительский процесс.Это немного дорого, но не так плохо, как кажется, поскольку fork
быстро в современных системах.Мой опыт показывает, что 1 fork
соответствует 2-3 pthread_create
вызовам, а 1 pthread_create
вызов соответствует 2-3 open
вызовам.Поскольку изменение часовых поясов потребует открытия одного или нескольких файлов и выполнения операций ввода-вывода для них, вы, вероятно, не будете увеличивать общую временную стоимость более чем в 3-5 раз.Если бы вы могли использовать дочерний процесс для каждого часового пояса, с которым вы работаете, он, конечно, мог бы быть более эффективным.