Re: how to use shared keyword in 2.063 version?

2013-06-03 Thread Andrey

On Saturday, 1 June 2013 at 16:00:58 UTC, Jonathan M Davis wrote:

On Saturday, June 01, 2013 10:03:28 Andrey wrote:
On Saturday, 1 June 2013 at 00:58:00 UTC, Jonathan M Davis 
wrote:

 On Friday, May 31, 2013 23:26:19 Anthony Goins wrote:
 To create a shared object you need shared this ctor.
 
 immutable this() for immutable,
 
 and const this() for const.
 
 Check out the change log. #2 on the list.
 
 Either that or you create it as thread-local and cast to 
 shared.
 
 - Jonathan M Davis


Does it mean, that to create shared Mutex or shared Socket for
example, I have to use next construction:

shared Socket socket = cast(shared Mutex)(new Socket());

shared Mutex m = cast(shared Mutex)(new Mutex());


Given the lack of shared constructors, yes - though you should 
probably write

it more like

auto mutex = cast(shared)new Mutex;
auto socket = cast(shared)new Socket;

since then you don't have to worry about accidentally changing 
the base type
(like you did with the Socket), and you don't have to write the 
type multiple

times.

- Jonathan M Davis



Thank you!  Now my app works fine.


Re: how to use shared keyword in 2.063 version?

2013-06-01 Thread Andrey

On Saturday, 1 June 2013 at 00:58:00 UTC, Jonathan M Davis wrote:

On Friday, May 31, 2013 23:26:19 Anthony Goins wrote:

To create a shared object you need shared this ctor.

immutable this() for immutable,

and const this() for const.

Check out the change log. #2 on the list.


Either that or you create it as thread-local and cast to shared.

- Jonathan M Davis


Does it mean, that to create shared Mutex or shared Socket for 
example, I have to use next construction:


shared Socket socket = cast(shared Mutex)(new Socket());

shared Mutex m = cast(shared Mutex)(new Mutex());

??


Re: how to use shared keyword in 2.063 version?

2013-06-01 Thread Jonathan M Davis
On Saturday, June 01, 2013 10:03:28 Andrey wrote:
 On Saturday, 1 June 2013 at 00:58:00 UTC, Jonathan M Davis wrote:
  On Friday, May 31, 2013 23:26:19 Anthony Goins wrote:
  To create a shared object you need shared this ctor.
  
  immutable this() for immutable,
  
  and const this() for const.
  
  Check out the change log. #2 on the list.
  
  Either that or you create it as thread-local and cast to shared.
  
  - Jonathan M Davis
 
 Does it mean, that to create shared Mutex or shared Socket for
 example, I have to use next construction:
 
   shared Socket socket = cast(shared Mutex)(new Socket());
 
   shared Mutex m = cast(shared Mutex)(new Mutex());

Given the lack of shared constructors, yes - though you should probably write 
it more like

auto mutex = cast(shared)new Mutex;
auto socket = cast(shared)new Socket;

since then you don't have to worry about accidentally changing the base type 
(like you did with the Socket), and you don't have to write the type multiple 
times.

- Jonathan M Davis


how to use shared keyword in 2.063 version?

2013-05-31 Thread Andrey

Hello!

I'm trying to use following code:

==
//...

class A
{
private
{
int m_someVar = 10;
}

public
{
this()
{
}
}
}


int main(string[] args)
{
shared A a = null;
a = new shared(A)(); // error.

return 0;
}
==

And on compile time, the compiler says Error: non-shared method 
main.A.this is not callable using a shared object.
How can I use an objects as shared, which classes were not 
defined with synchronized or shared keyword?



Thanks.


Re: how to use shared keyword in 2.063 version?

2013-05-31 Thread Anthony Goins

On Friday, 31 May 2013 at 21:01:49 UTC, Andrey wrote:

Hello!

I'm trying to use following code:

==
//...

class A
{
private
{
int m_someVar = 10;
}

public
{
this()
{
}
}
}


int main(string[] args)
{
shared A a = null;
a = new shared(A)(); // error.

return 0;
}
==

And on compile time, the compiler says Error: non-shared 
method main.A.this is not callable using a shared object.
How can I use an objects as shared, which classes were not 
defined with synchronized or shared keyword?



Thanks.


To create a shared object you need shared this ctor.

immutable this() for immutable,

and const this() for const.

Check out the change log.  #2 on the list.


Re: how to use shared keyword in 2.063 version?

2013-05-31 Thread Jonathan M Davis
On Friday, May 31, 2013 23:26:19 Anthony Goins wrote:
 To create a shared object you need shared this ctor.
 
 immutable this() for immutable,
 
 and const this() for const.
 
 Check out the change log. #2 on the list.

Either that or you create it as thread-local and cast to shared.

- Jonathan M Davis