我想创建一个类,其方法可以从多个线程调用.但它不是在调用它的线程中执行该方法,而是应该在它自己的线程中执行它们.不需要返回任何结果,它不应该阻止调用线程.
我在下面列出的第一次尝试实施.公共方法将函数指针和数据插入到作业队列中,然后工作线程接收该作业队列.然而,它并不是特别好的代码并且添加新方法是麻烦的.
理想情况下,我想使用它作为基类,我可以轻松添加方法(具有可变数量的参数),最小的hastle和代码重复.
有什么更好的方法呢?是否有任何类似的现有代码?谢谢
#include <queue>
using namespace std;
class GThreadObject
{
class event
{
public:
void (GThreadObject::*funcPtr)(void *);
void * data;
};
public:
void functionOne(char * argOne, int argTwo);
private:
void workerThread();
queue<GThreadObject::event*> jobQueue;
void functionOneProxy(void * buffer);
void functionOneInternal(char * argOne, int argTwo);
};
#include <iostream>
#include "GThreadObject.h"
using namespace std;
/* On a continuous loop, reading tasks from queue
* When a new event is received it executes the attached function pointer
* It should block on …Run Code Online (Sandbox Code Playgroud) 我试图用星期日作为开始日期和参考日期来获得星期范围,比方说$date,但我似乎无法弄明白.
例如,如果我在2009-05-01获得$ date,我会得到2009-04-26和2009-05-02.2009-05-10将产生2009-05-10和2009-05-16.我当前的代码看起来像这样(我不记得我从哪里取出它,因为我忘记在我的评论中记下网址):
function x_week_range(&$start_date, &$end_date, $date)
{
$start_date = '';
$end_date = '';
$week = date('W', strtotime($date));
$week = $week;
$start_date = $date;
$i = 0;
while(date('W', strtotime("-$i day")) >= $week) {
$start_date = date('Y-m-d', strtotime("-$i day"));
$i++;
}
list($yr, $mo, $da) = explode('-', $start_date);
$end_date = date('Y-m-d', mktime(0, 0, 0, $mo, $da + 6, $yr));
}
Run Code Online (Sandbox Code Playgroud)
我意识到它所做的只是在当前日期增加了7天.你会怎么做?
我还在尝试使用StructureMap来解决问题,而我遇到的一个问题是我的Controller Factory类在传递空控制器类型时会爆炸.这仅在应用程序第一次构建时发生,之后每个后续构建都可以正常工作.即使我关闭Visual Studio并重新打开项目(我没有在IIS中运行它).这几乎就像有某种缓存一样.这是控制器类的样子:
public class IocControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)
{
try
{
return (Controller)ObjectFactory.GetInstance(controllerType);
}
catch (StructureMapException)
{
System.Diagnostics.Debug.WriteLine(ObjectFactory.WhatDoIHave());
throw;
}
}
}
Run Code Online (Sandbox Code Playgroud)
可能有什么不对?我是否需要注册每个控制器?谢谢.
我想写入 Windows 临时目录中的文件。我知道在命令行中您可以使用环境变量%TEMP%来获取正确的路径,但是尝试执行以下操作:
file_put_contents("%TEMP%\\myfile.txt");
Run Code Online (Sandbox Code Playgroud)
...不起作用,因为环境变量没有得到解决。有没有办法做到这一点?
我有一个本地分支,用于git中的日常开发工作.我的工作流程是:
这一切都运行正常,但我遇到的大多数建议都说不应该"推"私人分支,定期执行rebase.
这里的问题是,在这种情况下,本地分支不会备份到服务器,保存工作的唯一方法是将其合并回"pushable"分支(即origin/master)
在这种情况下,您对工作流程的建议是什么?
谢谢!
更新:我意识到我有一个原始要求(避免使用外部实用程序)是不必要的限制.
我目前的解决方案是将所有存储库存储在云同步文件夹中 - 这样我就可以免费获得备份.
出于某种原因,我的印象是它只是被称为超时,但似乎并非如此.
谢谢!
我有一个List<object>不同类型的对象,如整数,字符串和自定义类型.所有自定义类型都是protobuf调整.我现在要做的是使用protobuf.net序列化/反序列化此列表.到目前为止,我怀疑我必须明确地声明每个类型,遗憾的是这些混合列表结构是不可能的.因为二元形成器没有问题做这些事情我希望我错过了一些东西,你可以帮助我.所以我的问题是如何处理protobuf.net中的对象.
我正在本地Linux服务器上测试服务器和客户端在同一台服务器上.在大约1024个连接之后,在我的代码中,我连接的地方,我得到连接拒绝.起初我以为选择的fd_set_max限制为1024,并且更改了服务器进行轮询而不是选择,我仍然没有超过这个数字.我的ulimit -n设置为2048,我监视服务器上的lsof达到大约1033(不确定这是否是确切数字)并且失败.任何帮助深表感谢.
我在注册表单上使用XMLHttpRequest来查看他们输入的用户名是否已被占用.脚本运行正常,但我注意到在发出请求时有一些时间延迟 - 网页在发送请求后冻结了一秒钟.
有没有办法让"在后台"请求并且不会导致前端出现任何延迟?我喜欢Twitter的实现:它在搜索数据库时显示一个旋转的沙漏图标.我如何得到类似的东西?
在代码中解决此问题的最佳方法是什么?
问题是我有2美元的金额(称为底池),需要分配给3个人.每个人获得来自两个盆的特定数量,并且费率必须大致相同.我不断遇到问题,我的分配加起来太多或太少.
这是一个具体的例子:
锅#1 987,654.32
锅#2 123,456.78
人员#1获得分配金额:345,678.89
人员#2获得分配金额:460,599.73
人员#3获得分配金额:304,832.48
我的逻辑如下(代码在c#中):
foreach (Person person in People)
{
decimal percentage = person.AllocationAmount / totalOfAllPots;
decimal personAmountRunningTotal = person.AllocationAmount;
foreach (Pot pot in pots)
{
decimal potAllocationAmount = Math.Round(percentage * pot.Amount, 2);
personAmountRunningTotal -= potAllocationAmount;
PersonPotAssignment ppa = new PersonPotAssignment();
ppa.Amount = potAllocationAmount;
person.PendingPotAssignments.Add(ppa);
}
foreach (PersonPotAssignment ppa in person.PendingPotAssignments)
{
if (personAmountRunningTotal > 0) //Under Allocated
{
ppa.Amount += .01M;
personAmountRunningTotal += .01M;
}
else if (personAmountRunningTotal < 0) //Over Allocated …Run Code Online (Sandbox Code Playgroud)