SQLite减少了for循环的时间

时间:2017-10-15 12:43:42

标签: java android multithreading sqlite

此代码读出我的sqlite表的所有entrows并将它们放入列表中。我已经尝试使用Threads减少加载时间,并在返回列表之前检查所有这些内容是否以join()结束。但是,如果我以线程的形式进行查询,我会进行两次委托。

int main(int argc, char *argv[]) {
    pthread_t client_thread;
    pthread_attr_t attr;
... 
while(1) {  /* main accept() loop */


    sin_size = sizeof(struct sockaddr_in);
    if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, \
    &sin_size)) == -1) {
        perror("accept");
        continue;
    }
    printf("server: got connection from %s\n", \
        inet_ntoa(their_addr.sin_addr));

    pthread_attr_t attr;
    pthread_attr_init(&attr);

    for (int i = 0; i < MAX_CLIENTS; i++) {
        pthread_create(&client_thread, &attr, decider, new_fd);
        pthread_join(client_thread,NULL);
    }
...

如何使用Threads减少此for循环的查询时间?

1 个答案:

答案 0 :(得分:0)

你不能。

Sqlite不是线程安全的,这意味着您的SQLiteHelper默认锁定您的数据库。

原因是您一次只能通过一个连接/事务进行访问。

使用以下命令定义要抓取的字段,使其快一点:

SELECT field1,field2,anotherfield FROM tura_spieler

您可能还希望index提高您的速度。

如果您想根据您想加入的其他人查询字段。

如果你是Android和Sqlite的新用户,你应该看看一个名为Room的新知识库,它提供了一个易于使用的paging library