Имея функцию, которая возвращает int, как я могу запустить ее в отдельном потоке, используя boost? - PullRequest
0 голосов
/ 07 декабря 2010

Я знаю, что это выглядит не обязательно, но я надеюсь, что это поможет мне найти утечку памяти. Итак, имея функцию внутри класса, которая возвращает int, как я могу вызвать ее из другой функции этого класса (вызвать ее так, чтобы функция, которая возвращает int, выполнялась в другом потоке)?

Ответы [ 3 ]

2 голосов
/ 07 декабря 2010

Программирование потока 101:

  1. Создать новый поток ("thread2"), который вызывает новую функцию ("foo").
  2. Пусть исходный поток немедленно присоединится к thread2после появления.
  3. Считать глобальную переменную, в которую foo () записала свое окончательное значение.

Обратите внимание, что foo () не может вернуть свое значение в исходный поток;он должен записать значение в некоторую разделяемую память (т. е. глобальную переменную).Также обратите внимание, что это не решит проблему утечки памяти и даже не сделает очевидным, откуда происходит утечка памяти.

Найдите утечки памяти с помощью Valgrind .И почитайте книгу или учебник о многопоточности.

2 голосов
/ 07 декабря 2010

Вы пытаетесь найти утечку памяти в функции, вызвав ее из другого потока? Это все равно что пытаться найти иголку в стоге сена, добавив в сено больше сена.

1 голос
/ 07 декабря 2010

Операционная система не устраняет утечки памяти в рабочих потоках. Это не так, как это работает.

Исправьте ваши ошибки. Миру больше не нужно дрянное программное обеспечение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...