История изменений
Исправление xaizek, (текущая версия) :
Но может с musl всё проще чем мне кажется.
Загрузка/линковка двух libc в один процесс ни к чему хорошему не приведёт (на SO), при везении оно даже не сразу упадёт, но рано или поздно это произойдёт. Реализации libc предполагают, что все функции/данные их и если одна libc получит данные от другой, то быть беде.
Тогда почему бы и не заюзать threads.h )
Там похоже лишь косметические изменения по сравнению с pthreads, в том же musl практически всё просто заворачивается на pthreads.
Общий совет: использовать glibc, а не musl. Я знаю исходники musl и как-то не доверяю людям, которые говорят, что у них мега-читабельные исходники, а у glibc всё сложно, а сами пишут такое:
if (0) {
case 'o':
a = fmt_o(arg.i, z);
if ((fl&ALT_FORM) && p<z-a+1) p=z-a+1;
} if (0) {
case 'd': case 'i':
if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) {
for (; ((uintptr_t)s & ALIGN) && n && (*d=*s)!=c; n--, s++, d++);
if ((uintptr_t)s & ALIGN) goto tail;
k = ONES * c;
wd=(void *)d; ws=(const void *)s;
for (; n>=sizeof(size_t) && !HASZERO(*ws^k);
n-=sizeof(size_t), ws++, wd++) *wd = *ws;
d=(void *)wd; s=(const void *)ws;
}
for (; n && (*d=*s)!=c; n--, s++, d++);
Исходная версия xaizek, :
Но может с musl всё проще чем мне кажется.
Загрузка/линковка двух libc в один процесс ни к чему хорошему не приведёт (на SO), при везении оно даже не сразу упадёт, но рано или поздно это произойдёт. Реализации libc предполагают, что все функции/данные их и если одна libc получит данные от другой, то быть беде.
Тогда почему бы и не заюзать threads.h )
Там похоже лишь косметические изменения по сравнению с pthreads, в том же musl практически всё просто заворачивается на pthreads.
Общий совет: использовать glibc, а не musl. Я знаю исходники musl и как-то не доверяю людям которые говорят, что у них мега-читабельные исходники, а у glibc всё сложно, а сами пишут такое:
if (0) {
case 'o':
a = fmt_o(arg.i, z);
if ((fl&ALT_FORM) && p<z-a+1) p=z-a+1;
} if (0) {
case 'd': case 'i':
if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) {
for (; ((uintptr_t)s & ALIGN) && n && (*d=*s)!=c; n--, s++, d++);
if ((uintptr_t)s & ALIGN) goto tail;
k = ONES * c;
wd=(void *)d; ws=(const void *)s;
for (; n>=sizeof(size_t) && !HASZERO(*ws^k);
n-=sizeof(size_t), ws++, wd++) *wd = *ws;
d=(void *)wd; s=(const void *)ws;
}
for (; n && (*d=*s)!=c; n--, s++, d++);