![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
здраствуйте...
у меня возникли проблемы... помогите Plz. как передать в поток параметр... пример (псевдокодами=)): помогите пожайлусто сделать нижеприведенный код работоспособным.
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
память под param в main выдели (new) и скопируй туда текст тем же strcpy
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
а пример можно?
|
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
поменяй функции местами и будет компиляться
замени на
вообще что значит работоспособно?
вот такой вариант бессмысленный Это сообщение отредактировал(а) Fazil6 - 5.5.2006, 15:30 |
||||||
|
|||||||
0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
дело в том, что char param является не массивом, а именно указателем на него.
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
char *param="simple str";
char* param2 = new char[10]; strcpy(param2, param); CreateThread(NULL, NULL, SimpleFunc, param2, NULL, NULL); -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
на кого?
Добавлено @ 15:50 _hunter, если уж даешь пример, то не учи плохому
|
||||||
|
|||||||
0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
и еще... дело в том, что значение param - не константа, а является результатом работы ф-ции strtok...
Добавлено @ 16:00 ошибка возникает в потоке, после param_in = static_cast<char*>(param); |
|||
|
||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
ну и что? Здается мне здесь вопрос совсем не про потоки. что ты пытаешься сделать? Добавлено @ 16:04
может param равен 0 |
||||
|
|||||
0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
в поток передать указатель на char, и в потоке переданное значение присвоить другому указателю.
Добавлено @ 16:08 да.... точно! thx... и вот еще... char *param=strtok(in_str, ""); после передачи параметра param в поток - в потоке он 0. как этого избежать? как зарезервировать правильно? |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
покажи полностью какой у тебя код.
небось никакой синхронизации нет. Ты передаешь указатели между потоками, а это далеко небезопасно. Один поток передав указатель может сразу удалить то, что там находилось, а второй после этого пытается с этими данными работать. Короче, много чего может быть |
|||
|
||||
cozzzy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 29.4.2006 Где: Харьков Репутация: нет Всего: нет |
Вообще-то дядя Рихтер рекомендует использовать _beginthreadex вместо CreateThread
![]() |
|||
|
||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
вообще-то я не уверен, что это
возвращает не 0 |
||||
|
|||||
0x00 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 3.4.2006 Репутация: нет Всего: нет |
вот. Это сообщение отредактировал(а) 0x00 - 5.5.2006, 16:21 |
|||
|
||||
LuckLess |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 15.9.2004 Репутация: 1 Всего: 1 |
да не только дядя Рихтер, а мелкомягкие. 0x00, во первых замени CreateThread на _beginthreadex ,как сказал Cozzy, т.к. CreateThread очень не безопасно. Когда ты активно пользуешь CRT CreateThread небезопасна вдвойне. и 2-е. скорее всего дело во времени жизи какогото объекта. покажи полностью весь свой код. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |