如果我在Linux下使用Pthread库创建线程,我需要使用函数pthread_create作为参数之一,它接受void *,这样我就可以传递一个指向某个东西的指针,这样我的线程例程就可以访问它了,但是这样做安全吗
{//some scope
int a=5//scope variable
pthread_create(&id,NULL,some_function,(void*)a);
}//end of scope
在我的日常生活中:
void *some_function(void *_arg)
{
int a=(int)arg;
return NU
我想创建动态的线程数,它取决于数据库行的数据库数。
List list = session.createQuery("From Devices").list();
线程的数量取决于list.size()。我正在使用For循环创建动态数量的线程
new Thread(){public void run(){/* Task of each thread */}.start();
创建动态线程数是否正确??如果我使用共享变量,我需要定义synchronized..任何其他想法如何管理线程,其中线程计数变得动态,并依赖于用户。
另一个问题是,我如何定义一些私有变量,这些变量被分离到每个
关于pthread_attr_setstacksize 的手册页
A thread's stack size is fixed at the time of thread creation. Only the main thread can dynamically grow its stack.
我对linux线程的理解是,主线程堆栈的大小仅限于主线程创建上的ulimit -s值。虽然它可以根据堆栈使用的需要映射到virt,但其大小不再增长。
动态增长在这里意味着什么?这是否意味着主线程堆栈的大小可以超过ulimit -s
Linux上的一个资源提到通过克隆系统调用来实现p线程创建,而其他基于unix的平台(后者以其他方式实现相同)。
这意味着在linux下,使用pthread_create从同一个进程创建的两个线程将具有不同的父进程ids。
$ ./a.out
new thread: pid 6628 tid 1026 (0x402)
main thread: pid 6626 tid 1024 (0x400)
问题
虽然克隆系统调用创建了一个子进程,该进程可以共享父进程执行上下文的可配置量(例如文件描述符和内存),但在我看来,在所有实现中,这可能不是最有效的。在Linux下,对于从pthread_c
以下是我代码场景,
在主线程中,我创建面板(基于一些配置),然后在下一步中基于文件类型(如视频,ppt,图像...)我创建了适当的控件(动态地)来在表单上显示。
控件的创建将在单独的线程中完成(针对每个文件)。创建控件后,当我尝试将该控件添加到面板(它是在主线程中创建的)时,它抛出一个错误,类似于cross thread violation, control was accessed from one thread other that it was created。
有人可以在这方面帮助我吗?
在这个场景中,一切-创建面板和控件-都将是动态的。任何东西都不会是静态的。
我尝试了在StackO
$ uname -a
Linux crowsnest 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 23:42:43 UTC 2011 x86_64 GNU/Linux
$ man readdir:
描述
函数返回一个指向dirent结构的指针,该指针表示目录流中由dirp指向的下一个目录项...snip...
readdir_r()函数是readdir()的可重入版本.
...snip...
返回值
成功后,readdir()返回指向dirent结构的指针。(此结构可以静态分配;不要试图释放(3)它。)如果到达目录流的末尾,则返回NULL,并没有更