我一直在阅读线程池模式,我似乎无法找到以下问题的通常解决方案.
我有时希望连续执行任务.例如,我从文件中读取文本块,由于某种原因,我需要按顺序处理块.所以基本上我想消除一些任务的并发性.
考虑这种情况,其中*需要按照推入的顺序处理任务.其他任务可以按任何顺序处理.
push task1
push task2
push task3 *
push task4 *
push task5
push task6 *
....
and so on
Run Code Online (Sandbox Code Playgroud)
在线程池的上下文中,没有这个约束,一个待处理任务的单个队列工作正常,但在这里它没有.
我想过让一些线程在特定于线程的队列上运行,而其他线程在"全局"队列上运行.然后,为了以串行方式执行某些任务,我只需将它们推送到单个线程所在的队列中.这确实听起来有点笨拙.
所以,这个长篇故事中的真正问题是:你将如何解决这个问题?您如何确保订购这些任务?
作为一个更普遍的问题,假设上面的场景变为
push task1
push task2 **
push task3 *
push task4 *
push task5
push task6 *
push task7 **
push task8 *
push task9
....
and so on
Run Code Online (Sandbox Code Playgroud)
我的意思是组内的任务应该按顺序执行,但组本身可以混合使用.所以你可以3-2-5-4-7举个例子.
另外需要注意的是,我无法预先访问组中的所有任务(我不能等到所有任务在启动组之前到达).
感谢您的时间.
我正在寻找一种报告C库中错误的可靠方法.考虑一个简单的队列示例:
struct queue *q = malloc(sizeof(*q));
if (NULL == q) {
/* malloc failed. now what ? */
return NULL; /* maybe ? */
}
Run Code Online (Sandbox Code Playgroud)
好的,所以对于那个示例,返回NULL不是有效的,所以返回它以指示错误是有意义的.但
void *get_data()
{
/* stuff */
/* Error detected. NULL is a valid return, now what ? */
/* stuff */
}
Run Code Online (Sandbox Code Playgroud)
更重要的是,一旦我们发出错误信号,如何信号什么是错误?我已经考虑过了,并没有一个令人满意的解决方案.
使用errno或其他一些全局对象不是我想做的事情(也许这些函数可以从多个线程调用等).
我想让客户端提供一些可以在调用后检查的"状态"对象,但这会使API变得非常难看.
那么你对这个主题的看法是什么?你如何以干净的方式报告错误?
是否可以将结构的成员列表作为一个char **?
例如,像这样:
struct mystruct {
int x;
float y;
char *z;
};
/* ... */
char **members = MAGIC(struct mystruct); /* {"x", "y", "z", NULL}. */
Run Code Online (Sandbox Code Playgroud)
我也对编译器相关的方法感兴趣.有这样的事吗?
感谢您的时间.
我需要读取一行文本(由换行符终止),而不对长度做出假设.所以我现在面对各种可能性:
fgets每次使用并检查最后一个字符是否为换行符并连续附加到缓冲区fgetc偶尔realloc使用缓冲区读取每个字符Intuition告诉我fgetc变体可能会变慢,但是我再也看不出如何fgets在不检查每个角色的情况下做到这一点(我的直觉也不总是那么好).线条非常大,因此性能很重要.
我想知道每种方法的优缺点.先感谢您.
我有一个字符串big_html,我想将它添加到一些div.我观察到以下性能差异:
$('#some-div').append( big_html );
// takes about 100 ms
//create it first
var append_objs = $(big_html);
$('#some-div').append( append_objs );
//takes about 150 ms
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?感谢您的时间.
编辑:我试图得到我正在添加到页面的东西.我也试过了
var added = $(big_html).appendTo( '#some-div' );
//150 ms
Run Code Online (Sandbox Code Playgroud)
有没有一种有效的方法来做到这一点?
有没有办法从所有行中减去第一个选定行的值?所以,如果我有
t = 1, v = 500
t = 2, v = 800
t = 3, v = 1200
Run Code Online (Sandbox Code Playgroud)
我会的
t = 1, v = 0
t = 2, v = 300
t = 3, v = 700
Run Code Online (Sandbox Code Playgroud)
我一直在寻找便携式解决方案,但Postgres解决方案的工作原理相同:-)谢谢.
是否有可能获得.so使用调试信息(gcc .. -g)编译的linux共享库()的源代码?感谢您的时间.
我正在使用Csharp tcp套接字在客户端和服务器之间发送数据.现在问题,因为我看到它或我认为它是tcp是一个流协议,并不会推送(发送)数据,除非它们是足够的数量.
例如,我想发送一些数据,无论它只是说它的8个字节长.我所看到的行为无论我等多久它都不会发送数据,除非我推动它更多地推迟到达tcp缓冲区.
所以我的问题是.如果我想通过tcp发送少量数据,我需要在末尾添加垃圾以强制套接字发送.(我不会对此感觉良好)或者是他们可以强制流的前段发送的另一种方式.
提前致谢.我仍在学习tcp,所以请原谅无知.
我正在使用jQuery-ui 1.8中的datepicker控件.from-date是一个文本输入.我附加了一个非常简单的日期选择器:
$('#from-date').datepicker();
Run Code Online (Sandbox Code Playgroud)
这会导致页面溢出(垂直滚动条),我试图避免.单击from-date后,将出现datepicker控件,滚动条消失.在取消datepicker后,滚动条不再出现.
文本字段位于具有溢出的div内:auto和固定的高度和宽度.我怀疑这是一个z指数问题.
我究竟做错了什么 ?我该怎么调试呢?
我试图用一些库绘制大量的点.这些点按时间排序,其值可被视为不可预测.
我现在的问题是,大量的点会使图书馆花费太长时间来渲染.许多点是多余的(即 - 它们"在"函数y = ax + b定义的同一行上").有没有办法检测和删除冗余点,以加快渲染速度?
感谢您的时间.
c ×3
jquery ×2
2d ×1
c# ×1
charts ×1
client ×1
concurrency ×1
debugging ×1
decompiling ×1
dom ×1
elf ×1
fgetc ×1
fgets ×1
io ×1
javascript ×1
linegraph ×1
linux ×1
math ×1
overflow ×1
performance ×1
plot ×1
postgresql ×1
reflection ×1
scrollbar ×1
sockets ×1
sql ×1
stdio ×1
struct ×1
tcp ×1
threadpool ×1