初次写Blog也不知道些什么好,想了好几天,我看就些我的问题吧!
一来可以时常提醒自己这么多问题还没解决, 二来要是有那位前辈看了帮小弟我解决了,那我自当感激...
多谢,多谢!!!
MY E-MAIL: ghk_love(at)163.com
可能部分问题也会慢慢的解决的, 一但我解决了我会在我的Blog上贴上的.
总之人生就是有一个个的问号组成的......
不求最美,但求实用.
----------------------------------------------------
Q1[2006-10-12]:
在linux C开发的问题,多线程中如何让一个线程等待? 就象多进程中的sleep(seconds).
sleep()是让进程等待的,不应该说等待吧,应该是挂起,如果在线程中用就是让整个进程挂起了噢...
google "pthread sleep"
from:
/* 不错, 可就是select函数功能不怎么会用 */
int mySleep(unsigned int sleepSecond)
{
timeval t_timeval;
t_timeval.tv_sec = sleepSecond;
t_timeval.tv_usec = 0;
select( 0, NULL, NULL, NULL, &t_timeval );
return 0;
}
--------------------------------------------
2006-11-24测试usleep结果同使用select, sleep结果一样, 整个进程处在等待状态.
--------------------------------------------
#if 0
static int thr_sleep(const int t)
{
struct timeval t_val;
t_val.tv_sec = t;
t_val.tv_usec = 0;
select(0, NULL, NULL, NULL, &t_val);
return (0);
}
#endif
static int thr_sleep(const int t)
{
return usleep(t);
}
static void op_a(void)
{
int i = 0xffff;
while (1)
{
printf("Thread.%u wait thread start..,.\n", (uint32_t)pthread_self());
while (i--);
thr_sleep(100);
printf("Thread.%u No wait thread end..,.\n", (uint32_t)pthread_self());
}
}
static void op_b(void)
{
int i = 0xffff;
while (1)
{
printf("Thread.%u No wait start..,.\n",
(uint32_t)pthread_self());
while (i--);
printf("Thread.%u end..,.\n", (uint32_t)pthread_self());
}
}
int main(int argc, char **argv)
{
pthread_t thr;
printf("Start thread.\n");
if (pthread_create(&thr, NULL, (void *)op_a, NULL))
{
printf("Create thread error: %s\n", strerror(errno));
return (-1);
}
op_b();
printf("End thread.\n");
return (0);
}
|
下一篇: http://blog.chinaunix.net/u/19782/showart_205768.html
阅读(2636) | 评论(1) | 转发(0) |