相关疑难解决方法(0)

在C中创建多个线程

我只是使用C编程的初学者.对于我的大学项目,我想创建一个多线程服务器应用程序,多个客户端可以连接并传输可以保存在数据库中的数据.

经过许多教程后,我对如何使用pthread_create创建多个线程感到困惑.

它在某处完成了:

pthread_t thr;

pthread_create( &thr, NULL ,  connection_handler , (void*)&conn_desc);
Run Code Online (Sandbox Code Playgroud)

它就像是某个地方

 pthread_t thr[10];

 pthread_create( thr[i++], NULL ,  connection_handler , (void*)&conn_desc);
Run Code Online (Sandbox Code Playgroud)

我尝试在我的应用程序中实现这两个,似乎工作正常.上述两种方法的哪种方法是正确的,我应该遵循.对不起英语和描述不好.

c multithreading pthreads

5
推荐指数
1
解决办法
1万
查看次数

使用调试符号从源代码编译glibc

我需要使用调试符号从源代码编译glibc。

1.我在哪里为此指定'-g'选项

2.我如何稍后将示例代码链接到此特定的glibc,而不是系统上安装的glibc?

linux linker gcc compilation glibc

4
推荐指数
1
解决办法
4262
查看次数

报告计算进度的C方式是什么?

这是在C++中使用线程报告计算进度的后续问题.

假设我有一个for执行run_difficult_task()多次的循环,我想推断循环已经推进了多远.我以前写过:

int i;
for (i=0; i < 10000; ++i) {

    run_difficult_task(i);

    if (i % 100 == 0) {
    printf("i = %d\n", i);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这种方法的主要问题是,执行run_difficult_task()可能从字面上永远走(由被卡在一个无限循环等),所以我想获得每一个进展报告k打印出循环变量的值来秒i.

我在这个网站上发现了很多关于面向对象多线程(我并不是很熟悉)的各种编程语言的文献,但我发现用C风格做这个问题看起来已经过时了.有平台无关的C11方式可以做我想要的吗?如果没有,那么我会对使用unix和gcc的方法感兴趣.

注意:我希望run_difficult_task并行运行各种实例(例如,使用OpenMP),但我希望for并行运行循环和报告机制.


相关:如何"多线程"C代码以及如何在普通C中启动线程?

c multithreading pthreads

3
推荐指数
1
解决办法
194
查看次数

C语言是否支持多线程?

由于C语言不提供任何面向对象的概念,我想知道它是否也不支持多线程?我在网上搜索过 - 有人能给我答案吗?

c compiler-construction multithreading

-4
推荐指数
1
解决办法
1563
查看次数