Ну, я пытаюсь установить переменную для использования в потоке, она прекрасно работает, если я вызываю pthread из основной функции, но если я вызываю ее из функции или функции внутри класса, переменная теряетсяи вместо этого выводит мусор, поэтому я добавил условие
if (this-> pickup <7) </p>
, поэтому я свернул код, чтобы разместить его здесь, потому чтов нем есть все примеры, о которых я говорю.
Вывод этого кода ниже:
Доступ по классу:
Привет, мир!<</p>
Прямой доступ:
Привет, мир !, N: 6 <</p>
Я хотел бы получить тот же результат, что и в случае прямого доступа в Access по классуЯ хочу, чтобы он вывел ", N: 6", потому что в конце концов он был определен.что мне здесь не хватает?
Надеюсь, я достаточно ясно, заранее спасибо.
(Кстати, я использую библиотеку pthread, доступную для Windows), так что воткод:
#include <stdio.h>
#include <pthread.h>
#include <iostream>
#include <conio.h>
#include <windows.h>
class C {
public:
int pickup;
void *hello()
{
std::cout << "\nHello, world!";
if(this->pickup < 7)
std::cout << ", N: " << this->pickup;
std::cout << "<" << std::endl;
printf("HI");
return 0;
}
static void *hello_helper(void *context)
{
return ((C *)context)->hello();
}
void StartThread(){
C c;
c.pickup = 6;
pthread_t t;
pthread_create(&t, NULL, &C::hello_helper, &c);
}
};
int main () {
C c;
std::cout << "Access by Class: \n";
c.StartThread();
c.pickup = 6;
Sleep(2000);
std::cout << "\nAccess Directly: \n";
pthread_t t;
pthread_create(&t, NULL, &C::hello_helper, &c);
_getch();
return 0;
}