Append and consume same compute buffer

I would like to know if it is possible to consume and append the same compute buffer.
I have made a simple particle system with compute shaders, and I would like to implement a particle emmiter.
For this, I have a first compute shader wich append my buffer of particle :

#pragma kernel CSMain

struct Particle
	float3 position;
	float3 direction;
	float3 color;
	float time;

AppendStructuredBuffer<Particle> ParticleBuffer : register(u0);

uint NumParticles;

[numthreads(8,1,1)] // Create 8 particle each time
void CSMain (uint3 id : SV_DispatchThreadID)
	Particle p;

		p.color = float3(1.0, 0.0, 0.0);
		p.position = float3(0.0, 0.0, 0.0); // Will be random 
		p.direction = float3(0.0, 1.0, 0.0); // Will be a random normalized vector
		p.time = 0.0;
		ParticleBuffer.Append(p); // Add the particle to the buffer	

Then, in an other compute shader I consume the previous buffer, update the particle, and push it back into the buffer. Is it possible to bind the same buffer twice like this ?

ConsumeStructuredBuffer<Particle>    ParticleBufferAppend : register( u0 );
AppendStructuredBuffer<Particle>    ParticleBufferConsume : register( u1 );

For now, the particle are well created, but it seems like there are not updated.

Thanks for your help.

I still need to do this for another project. Does anynody knoes a way to do this?
I need a particle emmiter, and I don’t know how to handle particle creation and particle death at the shader level.

Thanks for your help