| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > параметры вызова потока (CreateThread). |
| Автор: 0x00 5.5.2006, 15:16 | ||
| здраствуйте... у меня возникли проблемы... помогите Plz. как передать в поток параметр... пример (псевдокодами=)): помогите пожайлусто сделать нижеприведенный код работоспособным.
|
| Автор: _hunter 5.5.2006, 15:21 |
| память под param в main выдели (new) и скопируй туда текст тем же strcpy |
| Автор: 0x00 5.5.2006, 15:28 |
| а пример можно? |
| Автор: Fazil6 5.5.2006, 15:29 | ||||||
поменяй функции местами и будет компиляться
замени на
вообще что значит работоспособно?
вот такой вариант бессмысленный |
| Автор: 0x00 5.5.2006, 15:35 |
| дело в том, что char param является не массивом, а именно указателем на него. |
| Автор: _hunter 5.5.2006, 15:40 |
| char *param="simple str"; char* param2 = new char[10]; strcpy(param2, param); CreateThread(NULL, NULL, SimpleFunc, param2, NULL, NULL); |
| Автор: Fazil6 5.5.2006, 15:42 | ||||||
на кого?
Добавлено @ 15:50 _hunter, если уж даешь пример, то не учи плохому
|
| Автор: 0x00 5.5.2006, 15:51 |
| и еще... дело в том, что значение param - не константа, а является результатом работы ф-ции strtok... Добавлено @ 16:00 ошибка возникает в потоке, после param_in = static_cast<char*>(param); |
| Автор: Fazil6 5.5.2006, 16:02 | ||||
ну и что? Здается мне здесь вопрос совсем не про потоки. что ты пытаешься сделать? Добавлено @ 16:04
может param равен 0 |
| Автор: 0x00 5.5.2006, 16:04 |
| в поток передать указатель на char, и в потоке переданное значение присвоить другому указателю. Добавлено @ 16:08 да.... точно! thx... и вот еще... char *param=strtok(in_str, ""); после передачи параметра param в поток - в потоке он 0. как этого избежать? как зарезервировать правильно? |
| Автор: Fazil6 5.5.2006, 16:11 |
| покажи полностью какой у тебя код. небось никакой синхронизации нет. Ты передаешь указатели между потоками, а это далеко небезопасно. Один поток передав указатель может сразу удалить то, что там находилось, а второй после этого пытается с этими данными работать. Короче, много чего может быть |
| Автор: cozzzy 5.5.2006, 16:11 |
| Вообще-то дядя Рихтер рекомендует использовать _beginthreadex вместо CreateThread |
| Автор: Fazil6 5.5.2006, 16:16 | ||||
вообще-то я не уверен, что это
возвращает не 0 |
| Автор: 0x00 5.5.2006, 16:18 | ||
вот. |
| Автор: 0x00 5.5.2006, 16:22 | ||
| весь код полностью - это много-много страниц =) код, где ошибка - я представил выше. Добавлено @ 16:30 вот нерабочий код..
|
| Автор: LuckLess 5.5.2006, 16:34 | ||||
попробуй
Добавлено @ 16:36 точнее
|
| Автор: 0x00 7.5.2006, 12:59 |
| не работает. в поток передается 0. |