170 похожих чатов

Как устроены потоки, в частности C++? Впрочем, и Сишные. Я

где-то видел, что вызов fork() весьма дорогой, это делается как-то иначе? И почему в C++ так долго не было многопоточности, если в Си есть pthreads? Не думаю, что была какая-то особая сложность написать обёртку на С++ или использовать их в том виде, в каком они были

4 ответов

9 просмотров

потоки устроены в С++ так, как они устроены в ОС, на которой оно исполняется ( так как используются системные потоки)

на виндусе винапи потоки

Вызов FORK дорогой на WINDOWS, где он не реализован на уровне системы, и эмулирует всякими слоями-эмуляторами POSIX. А на Unix он вполне дешёвый. На Linux, где это было заложено в операционную систему с рождения как особая цель, fork и создание потока - это вообще одна операция, только флагами отличается. Да и вообще поток и процесс в линуксе - одно и то же, отличается только флагами управления разделением памяти , в потоках не разделяется, в процессах - разделяется по COW. Пожалуйста, не нужно порождать мифы, и так их уже много. "Я слышал, что..." должно тебе быть поводом чтобы перечитать эту информацию и уложить в своей голове правильно.

Про сложности - тоже полуправда. Это очень сложно. В основном как раз из-за fork, которой был в Unix-ах, а в Win его не было, зато были с рождения (платформы Win NT) потоки, которых наоборот не было трпдиционно в Unix. И вот наконец когда POSIX добил стандарт потоков, и была написана pthreads, да ещё она по всем операционкам стала реализована, только тогда можно было писать общую стандартную библиотеку многопоточности в С++. Которая , опять таки, реализована на базе POSIX API, потому что оно менее функционально, оно уже API Win в этом вопросе. А тут такой приходит некий Либер и пишет "ну, я не думаю, что потоки так сложно сделать, во всех остальных языках же есть потоки"... Ну мало того, что нет их везде, например, в Питоне, да ещё и написаны этим все языки на С или С++, с ломом и той самой матерью на #define ах определяющие потоки для этих самых языков на разных платформах, чтобы им там жилось сладко...

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта