我只是使用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)
我尝试在我的应用程序中实现这两个,似乎工作正常.上述两种方法的哪种方法是正确的,我应该遵循.对不起英语和描述不好.
我需要使用调试符号从源代码编译glibc。
1.我在哪里为此指定'-g'选项
2.我如何稍后将示例代码链接到此特定的glibc,而不是系统上安装的glibc?
这是在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语言不提供任何面向对象的概念,我想知道它是否也不支持多线程?我在网上搜索过 - 有人能给我答案吗?