小编Nat*_*eyn的帖子

那么C#5.0中的可选泛型类型参数呢?

只是一个想法.

在C#中使用可选类型参数不是很有用吗?

这会让生活更简单.我厌倦了多个具有相同名称但类型参数不同的类.另外VS不支持这个非常vell(文件名):-)

例如,这将消除对非通用IEnumerable的需求:

interface IEnumerable<out T=object>{
  IEnumerator<T> GetEnumerator()
}
Run Code Online (Sandbox Code Playgroud)

你怎么看?

c# generics

8
推荐指数
1
解决办法
5477
查看次数

如何使用参数创建packaged_task?

这个关于期货,承诺打包任务的优秀教程之后,我达到了我想要准备自己的任务的地步

#include <iostream>
#include <future>
using namespace std;

int ackermann(int m, int n) {   // might take a while
    if(m==0) return n+1;
    if(n==0) return ackermann(m-1,1);
    return ackermann(m-1, ackermann(m, n-1));
}

int main () {
    packaged_task<int(int,int)> task1 { &ackermann, 3, 11 }; // <- error
    auto f1 = task1.get_future();
    thread th1 { move(task1) };                              // call
    cout << "  ack(3,11):" << f1.get() << endl;
    th1.join();
}
Run Code Online (Sandbox Code Playgroud)

至于我可以解密gcc-4.7.0错误消息,它期望参数不同吗?但是怎么样?我尝试缩短错误消息:

error: no matching function for …
Run Code Online (Sandbox Code Playgroud)

c++ future packaged-task c++11

8
推荐指数
1
解决办法
7146
查看次数

OCaml:类型检查对象

如果我有一个对象,我该如何确定它的类型?(是否存在与Java instanceof运算符等效的OCaml ?)

ocaml object instanceof typechecking

7
推荐指数
2
解决办法
1万
查看次数

Web应用程序和桌面应用程序之间的细线

我最近一直在使用网络应用程序,主要是使用javascript和json丰富的Web UI.我不得不说,通过这些技术,我可以一直留下深刻的印象.

我越来越多地问自己,我是否更喜欢使用经典的GUI来开始(无论是C#/ VB.Net + WinForms,还是C/C++ + GTK/QT或Java或其他任何东西).然而,我已经能够在与网络相关技术的用户界面方面完成我想要的一切.

虽然我觉得我拥有我需要的一切,但是越来越多的东西不断涌现(并将继续永远存在),如HTML5,新的javascript功能,甚至更多的东西.

因此,随着网络应用变得越来越强大,我问你:

  1. 到目前为止,网络应用和桌面应用之间的界限有多薄?
  2. 这条线的未来是什么?网络应用程序在不久的将来有多大能力?从这个意义上说,是否应该定义Web应用程序,或者它们是否会永远改进它?

我想知道W3有什么说法,尽管我还没有调查过.

html javascript

7
推荐指数
1
解决办法
490
查看次数

对期货做出反应

我试图使用分而治之(aka fork/join)方法来解决数字运算问题.这是代码:

import scala.actors.Futures.future

private def compute( input: Input ):Result = {
  if( pairs.size < SIZE_LIMIT ) {
    computeSequential()
  } else {
    val (input1,input2) = input.split
    val f1 = future( compute(input1) )
    val f2 = future( compute(input2) )
    val result1 = f1()
    val result2 = f2()
    merge(result1,result2)
  }
}
Run Code Online (Sandbox Code Playgroud)

它运行(具有良好的加速)但未来的apply方法似乎阻塞了一个线程,并且线程池大大增加.并且当创建太多线程时,计算被卡住.

是否存在一种释放线程的期货反应方法?或任何其他方式来实现这种行为?

编辑:我使用scala 2.8.0.final

scala future actor

7
推荐指数
1
解决办法
701
查看次数

有什么地方可以了解F#可能的未来吗?

是否有任何网站/博客(可能是由F#团队成员?)定期讨论/揭示有关F#未来的想法?

我知道一些团队成员的博客,但我找不到包含此类内容的博客.

f#

7
推荐指数
1
解决办法
531
查看次数

检查方法与给定Delegate的兼容性?

在C#代码中,如何检查给定方法是否可以由特定委托类型表示?

我首先根据我的类型知识尝试了一些东西:

// The delegate to test against.
void TargetDelegate(string msg);

// and...
var methodInfo = Type.GetMethod(..);  // obtain the MethodInfo instance. 
// try to test it 
typeof(TargetDelegate).IsAssignableFrom(methodInfo.GetType());
Run Code Online (Sandbox Code Playgroud)

但这只涉及类型而不是方法 - 它总是错误的.

我倾向于相信答案在于DelegateType,但我现在只是在FCL四处游荡.任何帮助,将不胜感激.

.net c# delegates typechecking

7
推荐指数
1
解决办法
1477
查看次数

Io框架开始学习Io(编程语言)

有没有人知道MVC框架或任何框架是一个很好的开始使用Io(编程语言).

frameworks programming-languages iolanguage

7
推荐指数
1
解决办法
417
查看次数

Java线程 - 奇怪的Thread.interrupted()和future.cancel(true)行为

我想管理由TaskExecutor返回的Futures对象列表.
我有这样的事情

 List<Future<String>> list 

 void process(ProcessThis processThis) {     
    for ( ...) {
       Future<String> future = taskExecutor.submit(processThis);
       list.add(future)
    }
 }


 void removeFutures() {
    for(Future future : list) {
       assert future.cancel(true);
 }
Run Code Online (Sandbox Code Playgroud)

ProcessThis是一个实现Callable <String>并检查Thread.interrupted()状态的任务

    public String call() {
        while (true) {
            if (Thread.interrupted()) {
                break;
            }
            doSomething();
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在的问题是,当调用Thread.interrupted()时,只有并发线程的子集返回'true'.
removeFutures()中的断言为每个被删除的未来返回true(我也检查了isDone()和isCompleted().
被中断的线程数是随机的.超过15个运行线程有时13个被中断,有时2个... .
我真的不明白的地方是个问题.如果我叫future.cancel(真),并返回true ...然后我检查Thread.interrupted(这被称为只有一次),我希望这回也是如此.
我错过了什么你知道吗?

我在构建Java 1.6.0_02-B05

java multithreading future interrupt threadpool

5
推荐指数
2
解决办法
6981
查看次数

C++,Linux:错误:从'boost :: unique_future <void>'转换为请求的非标量类型'boost :: shared_future <void>'.怎么绕过它?

我尝试使用提升线程期货.如图所示,我们可以从打包任务中获得共享的未来.

所以我在linux上尝试这样的功能:

template <class task_return_t>
void pool_item( boost::shared_ptr< boost::packaged_task<task_return_t> > pt)
{
    boost::shared_future<task_return_t> fi= pt->get_future(); // error
    //...
Run Code Online (Sandbox Code Playgroud)

但我收到错误称:

../../src/cf-util/thread_pool.h: In member function ‘void thread_pool::pool_item(boost::shared_ptr<boost::packaged_task<R> >) [with task_return_t = void]’:
../../src/cf-util/thread_pool.h:64:3:   instantiated from ‘void thread_pool::post(boost::shared_ptr<boost::packaged_task<R> >) [with task_return_t = void]’
../../src/cf-server/server.cpp:39:27:   instantiated from here
../../src/cf-util/thread_pool.h:124:58: error: conversion from ‘boost::unique_future<void>’ to non-scalar type ‘boost::shared_future<void>’ requested
Run Code Online (Sandbox Code Playgroud)

我之前没有接受任何期货.所有的源代码,地方,我从打电话,那是被称为我的线程池.在Visual Studio 2010下的Windows上,它可以完美地编译和工作.

我该怎么办?如何修复或解决此错误?

c++ boost future scheduled-tasks boost-thread

5
推荐指数
1
解决办法
1480
查看次数