Тема: winAPI. _beginthread, навіщо розмір стеку

Намагаюся розібратися з функціями для створення багатопотокових програм з допомогою winAPI (я знаю що в С++ є власні бібліотеки для багатопотокових програм, але мені потрібно саме winAPI)

Я вже багато читав на цю тему тут і тут

я не зрозумів чому, але CreateThread використовувати не бажано

CreateThread() tells the OS to make a new thread. But it does not set up the thread to work with the libraries provided by the developer environment.

In other words, though Windows creates the thread and returns a handle to that thread, the runtime libraries haven't set up the thread-local data structures that they need.

So, instead of calling CreateThread(), we should use the calls by the runtime libraries. The two recommended ways of creating a thread are the calls _beginthread() and _beginthreadex(). When using _beginthread() and _beginthreadex(), we must remember to link in the multithreaded library. This will vary from compiler to compiler.

тоді я почав розбиратися з _beginthread, _beginthreadex. Всі ці функції використовують параметр stack_size, dwStackSize(CreateThread), для чого цей параметр ? Якщо можете то розкажіть на якомусь конкретному прикладі.

Подякували: leofun011

2 Востаннє редагувалося koala (21.09.2016 09:02:50)

Re: winAPI. _beginthread, навіщо розмір стеку

У кожної нитки має бути власний стек виконання для даних і адрес повернення. Очевидно, що використовувати спільний стек одночасно вони не можуть. Цей параметр визначає його розмір. Якщо не шкода пам'яті або не розумієте, що саме відбувається - ставте 0.

Подякували: Betterthanyou, Arete, leofun013

3

Re: winAPI. _beginthread, навіщо розмір стеку

Про стек уже трохи написали, але якщо хочете трохи поглибити знання то ось: http://www.transl-gunsmoker.ru/2010/09/ … -2000.html (російською).
Що стосується заборони CreateThread, то тут справа в рантаймі. Дуже часто в програміста в програмі усього один потік. Використання лише одного потоку дуже спрощує код і, що найважливіше, дозволяє зробити його значно швидшим. Тому майже усі рантайми старих мов програмування можуть працювати в однопоточному режимі, але якщо треба, то перемикаються на багатопоточний. І от питання: а де б ви вставили таке перемикання?

Подякували: Betterthanyou, leofun012

4

Re: winAPI. _beginthread, навіщо розмір стеку

Betterthanyou написав:

для чого цей параметр ? Якщо можете то розкажіть на якомусь конкретному прикладі.

Ви серйозно вважаєте що можна вивчити лише мову програмування, окремо без технологій ?

5

Re: winAPI. _beginthread, навіщо розмір стеку

Прихований текст

cheappi386 написав:
Betterthanyou написав:

для чого цей параметр ? Якщо можете то розкажіть на якомусь конкретному прикладі.

Ви серйозно вважаєте що можна вивчити лише мову програмування, окремо без технологій ?

Причому тут мова, я С++ знаю (не ідеально, але все ж таки). Про які технології ви говорите ?

6

Re: winAPI. _beginthread, навіщо розмір стеку

Betterthanyou написав:

Про які технології ви говорите ?

Що найменьше про машину ФонНеймана.