У меня есть main.c с глобальной переменной с именем int countboards
. В main () я запускаю pthread, который слушает ОДНО TCP-соединение и запускает его через (progserver.c). Значит, эта тема никогда не вернется. В main () я ввожу функцию rmmain(...)
, которая находится в rm.c (RM = Ressource Manager). В rm.c я читаю countboards
, в progserver.c в pthread я пишу в эту переменную (оба доступны extern int countboards
).
Так что проблема в том, что когда я пишу countboards
в pthread и хочу получить доступ к этой переменной после того, как она была записана в rm.c, она все еще имеет старое значение (в данном случае 0 вместо пример 10). Почему?
main.c:
int countboards;
int main(int argc, char** argv) {
countboards = 0;
pthread_t thread;
pthread_create(&thread, NULL, startProgramserver, NULL);
rmmain();
return 0;
}
rm.c:
extern int countboards;
int rmmain(vhbuser* vhbuserlist, int countvhbuser,
userio* useriolist, int countios, int usertorm, int rmtosslserver, int sslservertorm) {
while(1) {
int n;
n=read(usertorm,buf,bufc); // blocks until command comes from the user
...
board* b = findAFreeBoard(boardlist, countboards, usagelist); // here countboards should be >0, but it isn't
...
}
}
programserver.c:
extern int countboards;
void* startProgramserver(void*) {
...
sock = tcp_listen();
...
http_serve(ssl,s, sslpipes);
}
static int http_serve(SSL *ssl, int s, void* sslpipes) {
...
countboards = countboards + countboardscommands;
...
// here countboards has the new value
}