linux多线程编程
linc130022
这个作者很懒,什么都没留下…
展开
-
linux多线程不可重入和可重入
主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。 也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其转载 2012-10-31 10:32:17 · 2146 阅读 · 0 评论 -
linux多线程数据冲突
最近在写Linux服务器多线程编程,但是出现了当主线程接收客户端连接并发创建子线程的时候,子线程接收到主线程的数据出现了错误的情况,经过发现,是因为在子线程中没有立即处理主线程传递过来的数据,而是过了一会才将数据进行处理,而由于主线程中频繁的创建子线程,主线程传递给子线程中的数据会出现被重写,所以,在子线程中会出现数据出错的情况。 void *testThread(char *argc)原创 2012-10-31 10:42:42 · 942 阅读 · 0 评论 -
linux下不可重入函数
最近在写linux服务器端程序,使用了多线程和Socket,但是发现了不可重入函数的问题。 发生不可重入问题的函数为:localtime,inet_ntoa,getpwnam和函数getgrnam,在freebsd操作系统中只要将这些不可重入的函数改为对应的可重入函数:localtime_r,inet_ntoa_r,getpwnam_r和函数getgrnam_r即可。 而rand,srand以原创 2012-10-31 10:31:32 · 1080 阅读 · 0 评论 -
mysql的多线程安全问题
1 开启事务之前需要rollback 连接句柄。(清理垃圾) 2 mysql_ping 失败,程序需要处理重连逻辑; 3 mysql_query()执行的SQL语句是一个以‘/0’结尾的字符串,而mysql_real_query()执行的字符串长度是参数指定的,因此,前者不能不能包含二进制数据(二进制数据中可能会包含‘/0’,导致被认为到达字符串末尾) 实际使用中,推荐使用mysql_rea转载 2013-01-24 13:29:14 · 10011 阅读 · 0 评论