How are lists implemented in CPython?¶
CPython’s lists are really variable-length arrays, not Lisp-style linked lists. The implementation uses a contiguous array of references to other objects, and keeps a pointer to this array and the array’s length in a list head structure.
This makes indexing a list a[i] an operation whose cost is independent of the size of the list or the value of the index.
When items are appended or inserted, the array of references is resized. Some cleverness is applied to improve the performance of appending items repeatedly; when the array must be grown, some extra space is allocated so the next few times don’t require an actual resize.
В Си многопоточность.обычно реализована в библиотеке pthreads.hМногопоточность реализуется операционной системой. pthreads - просто библиотека, чтобы операционной системе сказать, мол, вот тебе отдельный поток для запуска
причём Си можно отлаживать как код на ассемблереНу да, Си всегда сначала компилируется в ассемблер, любым дизассемблером готовую программу можно разобрать на кусочки.
Прочитал в интернете, что ассемблерная программа может выполняться только на одном ядре.Покажите, где такая ерунда написана
Как тогда реализована многопоточность в СиВ Си - просто интерфейс управления многопоточностью. Сама многопоточность - в операционной системе.
раз есть эквивалентный код на ассемблере например, в gnu debuggerКак в Си, так и в ассемблере вы просто увидите "вызвать pthread_create", и всё
Функция fgets() считывает до num-1 символов из файла stream и помещает их в массив символов, на который указывает str. Символы считываются до тех пор, пока не встретится символ «новая строка», EOF или до достижения указанного предела. По окончании считывания в массив str сразу после последнего считанного символа помещается нулевой символ. Символ «новая строка» при считывании будет сохранен и станет частью массива str.
Функция gets() считывает символы из stdin и помещает их в массив символов, на который указывает str. Символы считываются до тех, пока не встретится новая строка или EOF. Символ «новая строка» не делается частью строки, а транслируется в нулевой символ, завершающий строку.
country[strlen(country)-1] = 0