【发布时间】:2015-05-07 14:25:57
【问题描述】:
我想创建一个并发服务器来处理多个客户端请求。所以我创建了一个线程函数来处理多个请求。我的问题是我有一个哈希表,它最初在服务器启动时加载文件的内容,并且我也有套接字描述符和文件描述符。那么如何传递给线程函数。存储参数并传递给线程是否需要结构?
我的代码是这样的:
struct UserData
{
char *username;
char *password;
};
struct HashTable
{
int size;
struct UserData *table
};
int main()
{
struct HashTable *htable;
//socket sd to open socket in server
and a Fd file descriptor to write to file
// hash table loaded with contents and it is a structure
/*create thread using pthread*/
pthread_create(...,fun,..);
}
void * fun(void *arg)
{
.............
}
我如何声明一个结构以传递给线程函数,包括套接字描述符(sd)、文件描述符(fd)和哈希表指针等参数?当我写入文件(fd)时,我会使用互斥锁来锁定吗?
【问题讨论】:
-
你的问题真的是“我如何声明一个结构吗?”您已经在上面证明了您知道如何声明结构。你在问什么?
-
您只是不知道如何将这些值包装到结构中并将其传递给线程函数?所有线程是否共享相同的 fd/sd(因为您询问的是锁)?
标签: c multithreading sockets