- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
线程创建绝对奇怪的情况,这里是测试代码:
#include <stdint.h> /* C99 types */
#include <stdbool.h> /* bool type */
#include <stdio.h> /* printf, fprintf, snprintf, fopen, fputs */
#include <string.h> /* memset */
#include <signal.h> /* sigaction */
#include <time.h> /* time, clock_gettime, strftime, gmtime */
#include <sys/time.h> /* timeval */
#include <unistd.h> /* getopt, access */
#include <stdlib.h> /* atoi, exit */
#include <errno.h> /* error messages */
#include <math.h> /* modf */
#include <assert.h>
#include <sys/socket.h> /* socket specific definitions */
#include <netinet/in.h> /* INET constants and stuff */
#include <arpa/inet.h> /* IP address conversion stuff */
#include <netdb.h> /* gai_strerror */
#include <pthread.h>
void thread_up(void) {
printf("thread ....\n");
int loop=0;
while(loop<=7)
{
printf("loop...\n");
sleep(10);
loop++;
}
printf("Exit loop\n");
}
int main()
{
pthread_t thrid_up=0;
int i = pthread_create( &thrid_up, NULL, (void * (*)(void *))thread_up, NULL);
if (i != 0) {
printf("ERROR: [main] impossible to create upstream thread\n");
exit(1);
}
while(1)
{
sleep(10);
}
}
该代码在 ps 命令上产生以下输出(在 ./test& 启动之后):
30214 root 704 S ./test
30215 root 704 S ./test
30216 root 704 S ./test
有什么提示吗?
最佳答案
只是一个注释。 man 7 pthreads
LinuxThreads
The notable features of this implementation are the following:
- In addition to the main (initial) thread, and the threads that the program creates using
pthread_create(3)
, the implementation creates a "manager" thread. This thread handles thread creation and termination. (Problems can result if this thread is inadvertently killed.)- Threads do not share process IDs. (In effect, LinuxThreads threads are implemented as processes which share more information than usual, but which do not share a common process ID.) LinuxThreads threads (including the manager thread) are visible as separate processes using
ps(1)
.
不管这个文档是关于 Glibc 的,你的 uClibc 版本可能使用 LinuxThreads 作为 pthread“后端”。因此从技术上讲,您的代码可能会创建三个调度实体。
但首先您确实必须确保 ps
打印线程,而不仅仅是进程,并仔细检查在探测期间是否只有一个已启动的程序实例。
附言您还应该检查您的 uClibc 是否真的使用 LinuxThreads 而不是 NPTL。因此 IMO 观察到三个线程的机会是存在的,但它非常小。
关于c - Linux 2.6.30 uClibc 0.9.29 pthread_create 两个线程只安装一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38720979/
我有一台带有 uClibc 的机器,我已经设法使用我制作的简单包装器让 glibc 在它上面工作。 它可以编译像 hello world 这样的简单程序,以及几乎任何其他 c 程序。 但是,当它们包含
我正在尝试通过 bitbake 为 arm7a 架构构建 uclibc,但我得到以下输出 user@ubuntu:~/stuff$ bitbake -b uclibc ERROR: Unable to
ucLibc malloc 线程安全吗? 最佳答案 显然是的,如果定义了 __UCLIBC_HAS_THREADS__ malloc.h 包含并声明互斥锁 http://git.uclibc.org/
我有一个可以运行的 uclibc 工具链。我可以静态编译一个简单的hello.c程序(arm-linux-gcc hello.c -o hello -static -s),但源包会自动动态编译。如何将
我有一个项目要从 glibc 移植到 uclibc,但遇到了这个问题。 gcc --std=c++11 Foo.cpp -o Foo-glibc x86_64-linux-uclibc-gcc --s
我使用armv7进行openwrt开发,遇到了vfork导致的段错误。 我编写了一个包含以下部分的小型测试程序: ... pid_t child_t; if((child_t
uClibc/glibc 是否提供任何将错误重定向到系统日志的功能?像“无法解析符号”这样的错误需要转到系统日志而不是控制台上的标准错误。 最佳答案 如果它是守护进程,最好的选择是使用具有此功能的初始
我正在做一个项目,我想使用 uClibc 编译 valgrind。谁能建议我如何进行? 我正在使用 fedora 和 i386 平台。目标平台也是 i386,稍后将在 MIPS 上运行。 谢谢 最佳答
我正在使用一个在初始化期间创建工作线程的共享库。该应用程序与 uClibc 链接。当它从 main() 返回时,它会在 __pthread_cond_wait() 中崩溃或从工作线程中崩溃,因为共享库
是否可以让基于 glibc 和 uClibc 的应用程序在一个系统上并行运行? 背景:我们有基于 gcc 的二进制交叉编译器配置为与 uClibc 链接。我们已经用它交叉编译了 glibc。现在我们要
我已经在谷歌上搜索了很多次以在信号处理程序中找到 backtrace() 的正确解决方案并尝试了几乎所有方法,但我无法在我的信号处理程序中成功获得回溯 - 这不是 SIGUSR1 处理程序。 在 uc
这是一个重新发布,之前的帖子已关闭,移至 SERVERFAULT 并再次关闭。我认为此帖子是一个有效的 stackoverflow 问题,因为我认为它由某些自动制作/编译/链接错误引起。这是一个编程问
我有一个二进制文件,我需要它才能在使用 uclibc 的嵌入式系统上工作,该二进制文件是针对 glibc 编译的,应该可以吗? 当我尝试运行它时,我收到一条错误消息,指出二进制文件不存在,因此我检查了
我们在 ARM 9 上运行 uclibc linux。问题是 uclibc 不支持回溯。发生核心转储时,我无法获取调用堆栈。 有人对此有好的解决方案吗? 例如,现有的 uclibc backtrace
情况 - 我正在使用第三方堆栈。我有第三方的源代码。这段代码相当笨拙,并且有很多与缓冲区溢出相关的问题。 我的解决方案 - 为了追查这个问题,我覆盖了现有的函数,如 sprintf 和 memcpy,
我正在尝试构建自己的 uClibc 嵌入式系统。我遇到了一些问题,但是2天后,我解决了所有问题。只剩下一个:pthread 无法正常工作。这是一个简单的程序,来自 python 的配置脚本: #inc
我正在编写一个在 Linux(内核 3.0)上运行的用户空间音频应用程序,它需要实时行为。我应该选择 glibc 还是 uClibC? uClibC 和 glibc 在实时行为方面如何比较? (编辑:
我在嵌入式环境中工作。我有一个用于 ARM 架构的交叉编译器,它是 eglibc 作为主要库(即默认的 libc 与工具链一起出现)。现在我想要一些应用程序与 uClibc 链接。所以我用那个工具链编
我正在使用 buildroot 构建一个嵌入式系统,我想用 node.js 替换 nginx+php。 我的系统正在使用 eglibc,但我想减小系统的大小,所以我想切换到 uclibc。 node.
有没有人有在基于 uclibc 的系统上运行使用 boost 库的 C++ 应用程序的经验?有可能吗?你会使用哪个 C++ 标准库? uclibc++ 可以与 boost 一起使用吗? 最佳答案 我们
我是一名优秀的程序员,十分优秀!