【发布时间】:2013-07-09 17:21:56
【问题描述】:
我正在尝试了解应用程序中线程的使用(我知道我正在做的事情在某种意义上可能是愚蠢的)并且我正在尝试了解如何操作在 main 结构中声明的变量从创建的线程。到目前为止,我有:
typedef struct Chi_Server {
int thread_status;
int active_connections;
pthread_t thread_id;
pthread_attr_t thread_attribute;
struct thread_info *tinfo;
} CHI_SERVER;
int main(void) {
CHI_SERVER *chi_server;
chi_server_start_server(chi_server);
if (pthread_create(&chi_server->thread_id, (void *) &chi_server->thread_attribute, &chi_server_runtime, &chi_server)) {
perror("Creating main thread");
}
initscr();
noecho();
cbreak();
nodelay(stdscr, TRUE);
keypad(stdscr, TRUE);
curs_set(0);
do {
chi_server_time_alive(chi_server);
chi_server_display(chi_server);
} while (getch() != 113);
nocbreak();
endwin();
chi_server_stop_server(chi_server);
return 0;
}
void *chi_server_runtime(void *chi_server) {
chi_server->server_stats.active_connections = 1;
}
我刚刚创建了 = 1,所以我可以查看结构变量是否可以在 main 中进行操作。到目前为止,我完全被难住了。有谁知道如何操作 main 中声明的结构?
【问题讨论】:
-
在调用 pthread_create() 时,它应该是
server而不是&server。您正在传递一个指向 SERVER 的指针。 -
@DaV
passing a pointer to a pointer to SERVER为什么?通知SERVER *server = arg; -
我意识到了其中的错误。我已将其更改为反映
-
你如何在main()中声明
server如果你声明像SERVER *server那么Dav是正确的 -
@GrijeshChauhan 在
main()中,如果server不是指针,则代码将无法编译。调用pthread_create()传递&server具有类型SERVER**。 James C,你能发布一下你是如何声明结构的吗?
标签: c linux variables pthreads structure