Page 1 of 1

как создать поток на Си

Posted: Wed Jan 03, 2024 1:06 pm
by Egor00f
Мне нужно запустить в отдельном потоке функцию.
то что я нашел на wiki:
ecx = адрес точки входа потока (начальный eip)
edx = указатель стэка потока (начальный esp)
что такое адрес точки входа потока и указатель стэка потока?
Если я правильно понял гугл, то

Code: Select all

#include <sys/ksys.h>
void func()
{
	//some code
}
int main(){
	_ksys_create_thread(*func, /*?*/);
	return 0;
}
	
А я его конечно же не понял, так что пж помогите

Re: как создать поток на Си

Posted: Wed Jan 03, 2024 3:19 pm
by Sweetbread
Попробуй выделить страницу ОЗУ через alloc и передать вторым аргументом вместо /*?*/

Re: как создать поток на Си

Posted: Wed Jan 03, 2024 5:17 pm
by Egor00f
можно примерчик?


и ещё как передать аргументы в функцию?

Re: как создать поток на Си

Posted: Wed Jan 03, 2024 7:49 pm
by rgimad
https://github.com/KolibriOS/kolibrios/ ... work.c#L41

и для кого делали примеры..

Re: как создать поток на Си

Posted: Thu Jan 04, 2024 11:00 am
by Egor00f
Так как передать аргументы в функцию, запускаемую в новом потоке?